关 闭

新闻中心

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.eepw.com.cn/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等。



评论


相关推荐

技术专区

关闭