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