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

          關(guān) 閉

          新聞中心

          EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 基于CMSIS標(biāo)準(zhǔn)的 Cortex-M3應(yīng)用軟件開(kāi)發(fā)

          基于CMSIS標(biāo)準(zhǔn)的 Cortex-M3應(yīng)用軟件開(kāi)發(fā)

          作者: 時(shí)間:2009-12-14 來(lái)源:網(wǎng)絡(luò) 收藏

          2 規(guī)范
          (1)文件結(jié)構(gòu)
          的文件結(jié)構(gòu)如圖3所示(以ST2為例)。其中stdint.h包括對(duì)8位、16位、32位等類型指示符的定義,主要用來(lái)屏蔽不同編譯器之前的差異。core_cm3.h和core_cm3.C中包括_核的全局變量聲明和定義,并定義一些靜態(tài)功能函數(shù)。system_device>.h和system_device>.c(即圖3中的system_stm32.h和system_stm32.c)是不同芯片廠商定義的系統(tǒng)初始化函數(shù)SystemInit(),以及一些指示時(shí)鐘的變量(如SystemFre-quency)。device>.h(即圖3中的stm32.h)是提供給程序的頭文件,它包含core_cm3.h和system_device>.h,定義了與特定芯片廠商相關(guān)的寄存器以及各中斷異常號(hào),并可定制核中的特殊設(shè)備,如MCU、中斷優(yōu)先級(jí)位數(shù)以及SysTick時(shí)鐘配置。雖然提供的文件很多,但在程序中只需包含device.>h。

          本文引用地址:http://www.ex-cimer.com/article/163413.htm

          (2)工具鏈
          CMSIS支持目前嵌入式開(kāi)發(fā)的三大主流工具鏈,即ARM ReakView(armcc)、IAR EWARM(iccarm)以及GNU工具鏈(gcc)。通過(guò)在core_cm3.C中的如下定義,來(lái)屏蔽一些編譯器內(nèi)置關(guān)鍵字的差異。


          這樣,CPAL中的功能函數(shù)就可以被定義成靜態(tài)內(nèi)聯(lián)類型(static_INLINE),實(shí)現(xiàn)編譯優(yōu)化。
          (3)中斷異常
          CMSIS對(duì)異常和中斷標(biāo)識(shí)符、中斷處理函數(shù)名以及中斷向量異常號(hào)都有嚴(yán)格的要求。異常和中斷標(biāo)識(shí)符需加后綴_IRQn,系統(tǒng)異常向量號(hào)必須為負(fù)值,而設(shè)備的中斷向量號(hào)是從0開(kāi)始遞增,具體的定義如下所示(以STM32為例):


          CMSIS對(duì)系統(tǒng)異常處理函數(shù)以及普通的中斷處理函數(shù)名的定義也有所不同。系統(tǒng)異常處理函數(shù)名需加后綴_Handler,而普通中斷處理函數(shù)名則加后綴_IRQHandler。這些異常中斷處理函數(shù)被定義為weak屬性,以便在其他的文件中重新實(shí)現(xiàn)時(shí)不出現(xiàn)重復(fù)定義的錯(cuò)誤。這些處理函數(shù)的地址用來(lái)填充中斷異常向量表,并在啟動(dòng)代碼中給以聲明,例如:NMI_Handler、MemManage_Handler、SysTick_Handler、WWDG_IRQHandler等。



          評(píng)論


          相關(guān)推薦

          技術(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); })();