嵌入式学习笔记 - STM32 HAL库以及标准库内核以及外设头文件区别问题
一 CMSIS内核驱动文件夹
标准库中CMSIS内核驱动文件夹中,仅包含两个.h文件,其中stm32f10x.h 为stm10系列底层文件如总线以及各片上外设模块寄存器地址,system_stm32f10x.h为系统底层配置文件,主要为时钟配置。
HAL库中CMSIS内核驱动文件夹中,改为如下三个文件,stm32f10x.h文件改为stm2f1xx.h以及stm32f103xe.h两个文件,stm32f103xe.h为stm10系列底层文件如总线以及各片上外设模块寄存器地址,stm2f1xx.h仅为底层配置文件stm32f103xe.h提供配置选择的宏定义,相当于一个入口文件,system_stm32f1xx.h为系统底层配置文件,主要为时钟配置。
注:由于以上区别,当某些标准库的工程历程移植到HAL库上时,如果仍然包含stm32f10x.h,会出现重复定义的问题,就是与stm32f103xe.h定义内容重复了,虽然HAL库中已不含stm32f10x.h头文件,但是KEIL安装根目录下,ARM编译器目录下依然有标准库的驱动源文件,包括头文件STM32F10x.h,而keil默认包含根目录下的头文件,所以会出现重复定义的错误,将包含stm32f10x.h改为包含stm32f1xx.h即可。
二 外设驱动文件夹
原来的标准库下的各外设驱动文件夹如下:
HAL外设驱动文件夹如下,改为STM32F1xx_HAL_Driver文件夹,如同文件夹名字一样,所有驱动文件加了HAL字样