1 标准库与 HAL 库
1.1 寄存器
寄存器众多,需要经常翻阅芯片手册,费时费力; 更大灵活性,可以随心所欲达到自己的目的; 深入理解单片机的运行原理,知其然更知其所以然。
2.2 标准库
将寄存器底层操作都封装起来,提供一整套接口(API)供开发者调用 每款芯片都编写了一份库文件,也就是工程文件里stm32F1xx…之类的; 配置结构体变量成员就可以修改外设的配置寄存器,从而选择不同的功能; 大大降低单片机开发难度,但是在不同芯片间不方便移植。
3.3 HAL库
(Hardware Abstraction Layer) ST公司目前主力推的开发方式,新的芯片已经不再提供标准库; 为了实现在不同芯片之间移植代码; 为了兼容所有芯片,导致代码量庞大,执行效率低下。
2 常见文件意义
startup_stm32f102xb.s
启动文件,用于初始化硬件、设置堆栈和中断向量表,然后跳转到 C/C++ 的主程序入口点( main 函数)。
stm32f1xx_it.c
中断服务例程文件,它包含了处理各种中断的 C 语言函数实现,例如定时器中断、外部中断等
system_stm32f1xx.c
定义了系统初始化函数 SystemInit 和系统时钟更新函数SystemCoreClockUpdate
sm32f1xx_hal.c
HAL库初始化、系统滴答、HAL库延时等相关函数
stm32f1xx_hal_cortex.c
内核通用函数定义和声明,如NVIC、MPU、系统软复位、Systick等,其实主要是对core_cm3.h 文件的相关 函数再次封装。
stm32f1xx.h
是所有F1系列的顶层头文件,通过条件编译来包含某个芯片的头文件,定义通用的枚举类型,定义通用的宏 定义
stm32f103xb.h
包含:中断编号定义、外设寄存器结构体类型定义、寄存器映射、寄存器位定义、外设判定
stm32f1xx_hal_conf.h
HAL库的用户配置文件,用于裁剪HAL库、配置晶振参数等
stm32hxx_hal_def.h
包含HAL库通用的枚举类型数据和宏定义
stm32f1xx_hal_ppp.c
某任意外设驱动源码,PPP表示任意外设
stm32f1xx_hal_ppp_ex.c
主要是存放外设的扩展(特殊)功能的驱动源码,PPP表示任意外设