新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM32在MDK中使用外部RAM淺解

        STM32在MDK中使用外部RAM淺解

        作者: 時間:2016-11-10 來源:網絡 收藏
        使用簡介:
        開發板 神舟王STM32F207開發板
        問題描述:
        在使用emwin的時候由于占用的變量較多,出現了STM32F207內部RAM不夠用的尷尬局面,開發板自帶了4M的外部SRAM,因此考慮速度和存儲的平衡,使用芯片內部RAM作為堆棧區使用,外部RAM則用來存儲其他變量
        修改內容:
        啟動文件即startup_stm32f2xx.s文件
        1.添加標志量:DATA_IN_ExtSRAM EQU 1 ;主要是方便控制切換使用內部和外部RAM
        2.修改棧區:IF DATA_IN_ExtSRAM == 1
        __initial_sp EQU 0x20000000 + Stack_Size
        ELSE
        __initial_sp
        ENDIF
        3.在進入main函數之前初始化外部RAM
        有兩種初始化方式
        第一種:在SystemInit內初始化
        SystemInit函數位于system_stm32f2xx.c文件內
        定義宏變量DATA_IN_ExtSRAM
        這樣系統初始化時就會調用函數SystemInit_ExtMemCtl
        修改SystemInit_ExtMemCtl函數內容,即初始化FSMC RAM
        第二種
        在startup_stm32f2xx.s內 調用main函數前先調用RAM初始化函數完成RAM的初始化
        IMPORT __main
        IMPORT SystemInit
        IMPORT SRAM_Init
        LDR R0, =SystemInit
        BLX R0
        LDR R0, =SRAM_Init
        BLX R0
        LDR R0, =__main
        BX R0
        ENDP
        當然還有最蛋疼的一種方式就是在startup_stm32f2xx.s初始化外部RAM 不過需要修改成匯編語言
        最后就是修改MDK的配置 在option->target勾選上外部RAM
        之后就可以嘗試定義一個大數組試試了



        關鍵詞: STM32MDK外部RA

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 克拉玛依市| 天长市| 宣城市| 双牌县| 南昌市| 滦平县| 利津县| 武功县| 汾阳市| 阿巴嘎旗| 高要市| 揭东县| 平武县| 莎车县| 宁夏| 固安县| 呼图壁县| 报价| 镇坪县| 来宾市| 广昌县| 靖江市| 专栏| 南江县| 金门县| 泽库县| 佛山市| 顺平县| 安阳县| 东乌珠穆沁旗| 平泉县| 三台县| 北辰区| 南阳市| 双柏县| 江源县| 宜春市| 兴仁县| 赤水市| 定安县| 苍溪县|