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