http://www.keil.com/pack/doc/cmsis/General/html/index.htmlhtml
如上图所示,在标准库编程中,入口文件是stm32f4xx.h,该文件属于cmsis定义的Device Peripheral Access Layer,定义了soc的寄存器数据结构。用户程序文件和中断处理程序文件stm32f4xx_it.h都须要包含stm32f4xx.h,后者进而包含cmsis定义的Core Peripheral Access Layer文件core_cm4.h和系统初始化文件system_stm32f4xx.h,以及驱动使能配置文件stm32f4xx_conf.h。编程
应用程序还须要包含一个和平台和编译器相关的汇编启动文件,该汇编文件初始化堆栈和中断向量表,并调入c程序的main函数。上述中断处理程序文件(stm32f4xx_it.h)文件名并不重要,重要的是里面必须定义汇编启动文件中声明的中断服务函数。数据结构
hal库在利用cmsis的结构上有些变化,入口文件变为stm32f4xx_hal.h,该文件进而包含驱动使能配置文件stm32f4xx_hal_conf.h,每一个驱动文件进而包stm32f4xx_hal_def.h,进而包含cmsis定义的Device Peripheral Access Layer文件stm32f4xx.h。函数
须要另外单独引入的是系统初始化文件system_stm32f4xx.c和中断处理程序文件,若是使用cubemx自动生成项目,还会包含常量定义文件mxconstants.h和初始化文件stm32f4xx_hal_mspspa