总:STM32——学习总纲
一、简介
1.1 CMIS简介
所有厂家为了市场兼容性推出的标准
arm架构
1.2 HAL库简介
1.2.1 各种库优缺点
二、 STM32 Cube固件包
ST公司为CMSIS 中间层开发的pack,包含HAL。
2.1 获取方式
ST官网:st.com/content/st_com/en.html
搜索:STM32cube - 工具与软件 - Search STMicrocontrollers
2.2 CMSIS标准软件包目录
2.3 正点原子整理的固件包
(STM32F1 Cube固件包)
2.3.1 两个主要文件夹内容
2.3.2 Cube固件包Drivers下CMSIS的关键文件
2.3.2.1 Device&Include文件
2.3.2.1.1 简介
以及。。。
此未精简后11个关键文件。
2.3.2.1.2 路径
stm32f1xx.h && stm32f103xe.h :
systemxxx.h && .c:
启动文件 startup:,startup_stm32f103xe.s - F103芯片大容量256k~512K
整理的固件包中有精简版CMSIS包,只包含了用到的文件。
三、HAL库框架结构
3.1 HAL 库文件夹结构
(STM32F1 Cube固件包)
HAL库源码用于外设驱动,位于STM32 Cube包 Drivers文件夹下 STM32F1xx_HAL_Driver。
3.2 HAL 库文件介绍
ppp是任意外设,看成xxx易理解。
3.3 HAL 库 API 函数和变量命名规则
少数会有不符合的情况。
举例:
3.4 HAL 库对寄存器位操作的宏定义
标准库中对寄存器操作主要用 API函数,HAL 库有具体的宏定义。例如:
具体文件--》
3.5 HAL 库回调函数(callback)
3.5.1 简介
通常用法:
理解方向:C++函数重写(override),同名同参数,不同函数体。
3.5.2 中断回调函数
四、HAL 库使用
4.1 STM32开发文件结构分布
4.2 基于CMSIS应用程序文件描述
也就是ST公司STM32 Cube固件包描述
4.2.1 CMSIS 核心层
2.3.2 中的关键文件。
4.2.2 设备驱动层
主要就是HAL 库 和 LL 库 外设驱动库。
4.2.3 用户程序文件
用户配置文件需要配置。其余可删除。
4.3 HAL 库的用户层配置(STM32f1xx_hal_conf.h)
在用户程序层配置用户自配置。
4.3.1 裁剪 HAL 库外设驱动源码(不进行编译)。
A、使用条件编译。
例如enable了GPIO的此宏,就是使能GPIO的驱动。
原理:在.c中使用#ifdef判断是否跳过预处理阶段
B、工程中使用什么外设就导入什么外设.c文件
4.3.2 设置晶振频率
4.3.2.1 设置外部高速晶振(HSE)频率:8MHz
4.3.2.2 设置内部高速晶振(HSI)频率:8MHz
4.3.2.3 设置外部低速晶振(LSE)频率:32.768 kHz
4.3.2.4 设置内部低速晶振(LSI)频率:40 kHz
4.4 HAL 库设备驱动层(STM32f1xx_hal.c)调用
在设备驱动层,例如 HAL_Init():
---------------------------------------------------------------------------------------------------------------------------------
MDK工程使用在此不做总结。