關 閉

        新聞中心

        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.104case.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等。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 南京市| 页游| 清远市| 德令哈市| 米易县| 富阳市| 财经| 新津县| 镇坪县| 万载县| 益阳市| 广宁县| 理塘县| 洱源县| 海南省| 靖西县| 阳朔县| 仁寿县| 贞丰县| 巧家县| 西平县| 崇仁县| 盱眙县| 广宗县| 策勒县| 鲁山县| 讷河市| 勐海县| 巴彦县| 拉萨市| 阿拉善右旗| 尚志市| 龙门县| 陇西县| 修武县| 苍梧县| 尼玛县| 武定县| 同德县| 永年县| 遵化市|