• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 關 閉

    新聞中心

    EEPW首頁 > 工控自動化 > 設計應用 > 基于CMSIS標準的 Cortex-M3應用軟件開發

    基于CMSIS標準的 Cortex-M3應用軟件開發

    作者: 時間:2009-12-14 來源:網絡 收藏

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

    本文引用地址:http://www.czjhyjcfj.com/article/163413.htm

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


    這樣,CPAL中的功能函數就可以被定義成靜態內聯類型(static_INLINE),實現編譯優化。
    (3)中斷異常
    CMSIS對異常和中斷標識符、中斷處理函數名以及中斷向量異常號都有嚴格的要求。異常和中斷標識符需加后綴_IRQn,系統異常向量號必須為負值,而設備的中斷向量號是從0開始遞增,具體的定義如下所示(以STM32為例):


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



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 乌兰察布市| 台安县| 大厂| 威宁| 鲁甸县| 东乌珠穆沁旗| 顺平县| 台北县| 邮箱| 车险| 乌审旗| 桐梓县| 余姚市| 鄯善县| 剑阁县| 保定市| 扎囊县| 鹿泉市| 姜堰市| 宿迁市| 绵竹市| 高陵县| 湾仔区| 榆树市| 黄浦区| 麻城市| 阿克陶县| 桓仁| 淳化县| 平舆县| 乌兰察布市| 沁源县| 安龙县| 洪江市| 登封市| 老河口市| 江华| 即墨市| 昌乐县| 富川| 博爱县|