<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32在MDK中使用外部RAM淺解

          STM32在MDK中使用外部RAM淺解

          作者: 時(shí)間:2016-11-10 來源:網(wǎng)絡(luò) 收藏
          使用簡(jiǎn)介:
          開發(fā)板 神舟王STM32F207開發(fā)板
          問題描述:
          在使用emwin的時(shí)候由于占用的變量較多,出現(xiàn)了STM32F207內(nèi)部RAM不夠用的尷尬局面,開發(fā)板自帶了4M的外部SRAM,因此考慮速度和存儲(chǔ)的平衡,使用芯片內(nèi)部RAM作為堆棧區(qū)使用,外部RAM則用來存儲(chǔ)其他變量
          修改內(nèi)容:
          啟動(dòng)文件即startup_stm32f2xx.s文件
          1.添加標(biāo)志量:DATA_IN_ExtSRAM EQU 1 ;主要是方便控制切換使用內(nèi)部和外部RAM
          2.修改棧區(qū):IF DATA_IN_ExtSRAM == 1
          __initial_sp EQU 0x20000000 + Stack_Size
          ELSE
          __initial_sp
          ENDIF
          3.在進(jìn)入main函數(shù)之前初始化外部RAM
          有兩種初始化方式
          第一種:在SystemInit內(nèi)初始化
          SystemInit函數(shù)位于system_stm32f2xx.c文件內(nèi)
          定義宏變量DATA_IN_ExtSRAM
          這樣系統(tǒng)初始化時(shí)就會(huì)調(diào)用函數(shù)SystemInit_ExtMemCtl
          修改SystemInit_ExtMemCtl函數(shù)內(nèi)容,即初始化FSMC RAM
          第二種
          在startup_stm32f2xx.s內(nèi) 調(diào)用main函數(shù)前先調(diào)用RAM初始化函數(shù)完成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
          當(dāng)然還有最蛋疼的一種方式就是在startup_stm32f2xx.s初始化外部RAM 不過需要修改成匯編語(yǔ)言
          最后就是修改MDK的配置 在option->target勾選上外部RAM
          之后就可以嘗試定義一個(gè)大數(shù)組試試了



          關(guān)鍵詞: STM32MDK外部RA

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();