Cortex系列芯片采用的内核都是相同的,区别主要为核外的片上外设的差异。为了解决不同的芯片厂商生产的Cortex微控制器软件的兼容性问题,ARM与芯片厂商建立了CMSIS标准(CortexMicroController Software Interface Standard)。CMSIS核心层包括:
内核函数层:其中包含用于访问内核寄存器的名称、地址定义,主要由 ARM 公司提供。 设备外设访问层:提供了片上的核外外设的地址和中断定义,主要由芯片生产商提供。CMSIS 层位于硬件层与操作系统或用户层之间,提供了与芯片生产商无关的硬件抽象层,可以为接口外设、实时操作系统提供简单的处理器软件接口,屏蔽了硬件差异,STM32的库就是按照 CMSIS 标准建立的。
Drivers: 官方CMSIS库,HAL库,BSP(一般用不到)。
Middlewares: 中间件,包含官方的STemWin,STM32_Audio,STM32_USB_Device_Library,STM32_USB_Host_Library;第三方的 Fatfs,FreeRTOS,LibJPEG,LwIP等。
Drivers\CMSIS: 启动文件,stm32f429xx.h,内核相关头文件(core、arm、cmsis开头),DSP库,RTOS头文件cmsis_os.h。
CORE文件夹 | 用途 |
---|---|
cmsis_armcc.h | 内核文件 |
core_cm4.h | 内核文件 |
core_cmFunc.h | 内核文件 |
core_cmInstr.h | 内核文件 |
core_cmSimd.h | 内核文件 |
startup_stm32f429xx.s | 启动文件 |
HALLIB文件夹 | 用途 |
---|---|
stm32f4xx_hal_cortex.c/.h | Cortex内核通用函数声明和定义,如NVIC配置,系统软复位以及Systick 配置等 |
sm32f4xx_hal.c | HAL通用API(比如HAL_Init,HAL_DeInit,HAL_Delay 等) |
stm32f4xx_hal.h | HAL的头文件,用户编写 |
stm32f4xx_hal_def.h | 包含HAL的通用数据类型定义和宏定义 |
stm32f4xx_hal_ppp.c/.h | 外设 |
stm32f4xx_II_ppp.c/.h | 在一些复杂外设中实现底层功能,在stm32f4xx_hal_ppp.c中被调用 |
USER文件夹 | 用途 |
---|---|
stm32f4xx_hal_conf.h | HAL配置文件,用来选择使能何种外设以及一些时钟相关参数设置。其本身应该被用户代码所包含。 |
stm32f4xx_hal_msp.c | 包含HAL_MspInit和HAL_MspDeInit函数,连接HAL库与硬件 |
stm32f4xx_it.c/.h | 中断服务函数,除SysTick_Handler外基本都是空函数 |
stm32f4xx.h | 如果定义了宏定义标识符STM32F429xx,那么stm32f4xx.h将会包含stm32f429xx.h |
stm32f429xx.h | 片上外设访问层头文件,主要作用是寄存器定义声明以及封装内存操作 |
system_stm32f4xx.c/h | 系统初始化函数SystemInit,系统时钟更新函数SystemCoreClockUpdate |
SYSTEM文件夹 | 用途 |
---|---|
sys.c | 时钟系统配置,以及一些汇编指令 |
delay.c | 无OS和有OS的延时函数 |