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(总线时钟)频率
然后配置时钟树,设置晶振的频率,最后会自动计算出HCLK(总线时钟)频率
配置串口,这里使用了重映射的位置,需要手动在芯片图Pinout View上设置
习惯使用DMA发送节省资源,在这里把DMA的串口收发都这只了
SPI(Serial Peripheral interface)穿行外围设备接口配置同理
习惯使用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的学习笔记项目实践等百度云盘下载链接,回复可见:
此处内容需要评论回复后方可阅读
哈哈
学习学习