STM32 学习路线
- 硬件平台:STM32F103C8T6 洋桃 1 号开发板
- 函数库:使用 STM32CubeMX 可视化快速创建项目,在线下载对应库
- 代码风格:与 ST 公司提供的 V3.5.0 标准库保持一致
- 开发调试:使用 Keil5+JLink 开发调试
使用 CubeMX 创建 KEIL 工程
1. 创建新工程
2. 选择工程芯片
3. 设置工程相关参数
4. 时钟配置
5. 外设设置
6.GPIO 设置
7.JLink 调试选择
8. 最后生成代码




一般硬件方案都是使用外部晶振作高速时钟源的,在 RCC 中设置 HSE
然后配置时钟树,设置晶振的频率,最后会自动计算出 HCLK(总线时钟)频率



配置串口,这里使用了重映射的位置,需要手动在芯片图 Pinout View 上设置
习惯使用 DMA 发送节省资源,在这里把 DMA 的串口收发都这只了
SPI(Serial Peripheral interface)穿行外围设备接口配置同理






STM32CubeMX 项目详解
1、HAL 库函数
- 函数形式:均已
HAL_
开头 - 寻找过程:在驱动文件
stm32f1xx_hal_xxx.c
或者.h
文件中找函数定义,一般靠后位置 其他说明:
- HAL 库并没有把所有的操作都封装成函数。
- 对于底层的寄存器操作(如读取捕获 / 比较寄存器),还有修改外设的某个配置参数 (如改变输入捕获的极性),HAL 库会使用宏定义来实现。而且会用
__HAL_
作为宏定义的前缀。 - 获取某个参数,宏定义中一般有
_GET
;而设置某个参数,宏定义中会有_SET
。 - 在开发过程中如果遇到寄存器级别或者更小范围的操作时,可以到该外设的头文件中查找,一般都能找到响应的宏定义。
- HAL 库函数第一个参数一般都是句柄(一个包含了当前对象对大部分状态的结构体),虽然增加了开销,但是使用会便捷很多。
2、中断回调函数
- 函数形式:
HAL_XXX_XXXCallback()
- 寻找过程:中断文件
stm32f1xx_it.c
-> 中断函数XXX_IRQHandler(void)
->HAL 库中断函数HAL_XXX_IRQHandler(GPIO_PIN_13)
-> 回调函数HAL_XXX_XXXCallback()
3、外设对应时钟
- 随便进入一个外设初始化函数,如
MX_GPIO_Init()
- 随便进入一个时钟使能函数,如
__HAL_RCC_GPIOC_CLK_ENABLE()
- 随便进入一个 RCC 宏定义,如
RCC_AHB1ENR_GPIOCEN
- 或者直接进入
stm32f103xx.h
文件,里面有所有外设与时钟的对应关系,如RCC_AHB1ENR_DMA1EN
项目实践,学习笔记
- 文末提供了STM32CubeMX的学习笔记项目实践等百度云盘下载链接,回复可见:
此处内容需要评论回复后方可阅读
哈哈
学习学习
学习 @(呵呵)