单片机开发本质是对寄存器的操作,固件库是对寄存器的进一步封装
直接寄存器开发:执行效率最高,但是开发难度大不方便移植,需要经常查阅数据手册
标准外设库开发:将寄存器封装一整套标准化函数接口,大大降低开发难度,移植也较为方便,但是目前已经停止维护
HAL库开发:对寄存器的封装更加的抽象,因此移植性更强更方便,可在更多不同平台上运行,但是执行效率较低

STM32CubeMX:是一款图形化开发工具,自动生成stm32芯片初始化相关代码,可配置引脚生成c代码,大大节省了移植HAL固件库和配置各种外设的时间,非常方便的开发工具
移植HAL固件库:手动移植HAL固件库较为繁琐耗时,可自行裁剪,自定义的工程目录文件夹结构更加清晰,对HAL库的理解更加深刻
进入官网界面,点搜索输入STM32CubeF1,因为本次使用的开发板是STM32F103C8T6最小系统板,如果是f4系列开发板就搜索STM32CubeF4,h7系列搜索STM32CubeH7


选择最新版本下载,下载是免费的,但是要输入个人邮箱注册,如果不想注册登录,可以选择前面提供的其他下载方式

解压下载的压缩包,可得到这样的文件夹

简单移植只需要Drivers中其中两个核心文件夹,CMSIS文件夹和STM32F1xx_HAL_Driver文件夹的内容文件,CMSIS中包括:DSP库、Cortex-M内核及其设备文件、微控制器专用头文件、启动文件、专用系统文件等,STM32F1xx_HAL_Driver包含:是HAL外设驱动源码,包括F1系列HAL库源文件和头文件,如果其他系列开发板要更换固件包

CMSIS中保留Device文件夹和Include文件夹

Device可以只留下这五个文件
startup_stm32f103xb.s:启动文件根据开发板而定,如果是STM31F103C8T6开发板选择startup_stm32f103xb.s,STM31F103ZET6开发板选择startup_stm32f103xe.s,根据开发板选择对应的启动文件
stm32f1xx.h和stm32f103xb.h:微控制器专用头文件,同理根据开发板选择对应的启动文件
system_stm32f1xx.c:专用系统文件


