MENU

STM32CubeMX+Keil学习笔记——一文入门

March 10, 2021 • 硬件

STM32学习路线

  1. 硬件平台:STM32F103C8T6洋桃1号开发板
  2. 函数库:使用STM32CubeMX可视化快速创建项目,在线下载对应库
  3. 代码风格:与ST公司提供的V3.5.0标准库保持一致
  4. 开发调试:使用Keil5+JLink开发调试

使用CubeMX创建KEIL工程

创建新工程
选择工程芯片
说明
代码生成规则
一般硬件方案都是使用外部晶振作高速时钟源的,在RCC中设置HSE
高速外部晶振
然后配置时钟树,设置晶振的频率,最后会自动计算出HCLK(总线时钟)频率
配置时钟树
配置串口,这里使用了重映射的位置,需要手动在芯片图Pinout View上设置
配置串口
习惯使用DMA发送节省资源,在这里把DMA的串口收发都这只了
DMA串口收发
SPI(Serial Peripheral interface)穿行外围设备接口配置同理
GPIO配置
JLink
生成代码
生成代码的工程目录详解
工程目录

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、外设对应时钟

  1. 随便进入一个外设初始化函数,如MX_GPIO_Init()
  2. 随便进入一个时钟使能函数,如__HAL_RCC_GPIOC_CLK_ENABLE()
  3. 随便进入一个RCC宏定义,如RCC_AHB1ENR_GPIOCEN
  4. 或者直接进入stm32f103xx.h文件,里面有所有外设与时钟的对应关系,如RCC_AHB1ENR_DMA1EN

项目实践,学习笔记

文末提供了STM32CubeMX的学习笔记项目实践等百度云盘下载链接,回复可见:

学习笔记项目实践

此处内容需要评论回复后方可阅读

Last Modified: February 16, 2023
0:00