文章目录

  • 前言
  • 一、本地环境
  • 二、开始
  • 1.工程创建
  • 2.UART配置
  • 2.时钟配置
  • 3.代码生成
  • 3.编译工程



前言

记录一下STM32CubeMX的学习笔记,同时分享给初学的小白,希望一起进步。


一、本地环境

编译环境:KEIL
代码生成:STM32CubeMX
库:HAL
MCU:STM32F072

二、开始

1.工程创建

打开 STM32CubeMX,在“New Project”中点击"ACCESS TO MCU SELECTOR"来选择MCU的型号。

CUBEMX配置串口 cubemx uart_CUBEMX配置串口

之后在对应的搜索框内选择你自己的mcu型号,然后选择即可。

CUBEMX配置串口 cubemx uart_mcu_02

双击芯片进来过后可以看到以下界面:

CUBEMX配置串口 cubemx uart_stm32_03


一共有五个部分:

1、引脚配置,外设配置

2、时钟配置

3、工程配置

4、引脚外设配置下拉选项

5、芯片图

这里我们只讲解UART配置。

2.UART配置

选中“Pinout&Configuration”选项,点击左边的Connectivity选项,选中USART2,并且将模式选为Asynchronous即异步串口模式,其他的的串口模式可以按照需求进行选择。

CUBEMX配置串口 cubemx uart_单片机_04

选择之后,我们可以看到右边的引脚分配图的PA2和PA3已经设置成了USART2_TX和USART2_RX模式。

CUBEMX配置串口 cubemx uart_学习_05

选择好之后,我们在Configuration界面进行串口配置。

CUBEMX配置串口 cubemx uart_单片机_06


1、NVIC Setting :配置串口中断使能

2、DMA Setting :配置发送接收的DMA模式

3、GPIO Setting :配置串口引脚

4、Parameter Setting :配置串口我这里没有使用串口中断所以没有配置,如果要使用的话直接Enabled就行了。

这里是串口配置:

波特率:115200

字节长度:8

无校验

一个停止位

CUBEMX配置串口 cubemx uart_stm32_07

2.时钟配置

配置完GPIO后开始配置时钟,这里讲的是没有外部时钟,用的是内部时钟,默认14Mhz的内部时钟。

CUBEMX配置串口 cubemx uart_mcu_08

3.代码生成

时钟配置完毕后,选择“Project Manager”到工程配置界面。

1、配置工程的名称

2、工程存储路径

3、IDE选择(如果是keil工具,选择MDK-ARM)

4、mcu依赖的cube包在哪个目录

CUBEMX配置串口 cubemx uart_stm32_09

接着到“Code Generator”下选择这几个选项来生成工程:

CUBEMX配置串口 cubemx uart_学习_10

选择好过后我们就可以点击右上角的"GENERATE CODE"按键来生成代码了。
如果提示你的firmware package 缺少直接更新下载即可,如果没网状态,就需要去官网下载依赖包放在之前提到的目录下即可。

我是用以下依赖包生成的工程代码。

CUBEMX配置串口 cubemx uart_CUBEMX配置串口_11

3.编译工程

点击编译按钮对工程进行编译。

CUBEMX配置串口 cubemx uart_CUBEMX配置串口_12


在 CubeMX 生成的文件中添加用户代码的时候,必须是写在/* USER CODE BEGIN n*/和/* USER CODE

END n*/之间。这样如果需要改变 Cube 工程的配置,在重新生成代码时,在这两句注释之间的语 句不会被覆盖。而用户新建或添加的文件不会受到影响。编译完成后,我们去到 stm32f0xx_hal_uart.c的源文件,然后右键,打开相应的头文件。

CUBEMX配置串口 cubemx uart_mcu_13


CUBEMX配置串口 cubemx uart_学习_14


找到串口函数:

CUBEMX配置串口 cubemx uart_stm32_15


在main函数中添加以下代码即可:

CUBEMX配置串口 cubemx uart_CUBEMX配置串口_16

编译程序,下载运行,mcu即可循环发送“Hello world”。

函数解析:
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
第一个参数 huart:串口的句柄结构体指针,本例中使用&huart2,因为 CubeMX 配置生成的代码 中已经定义了 huart2,并且在初始化函数 MX_USART2_UART_Init( )代码中已经将该变量和硬件的 USART2进行了关联,所以操作的就是 USART2
第二个参数 pData:是要发送的数据的指针,可以像本例一样,直接写入字符串。
第三个参数 Size:本次要发送的字符数量。
第四个参数 Timeout:超时时间,单位是 ms。这是发送一个字符的超时时间,如果发送某个字符 超过了所给的参数,则函数会返回 HAL_TIMEOUT。
该函数是有返回值的,返回值反映的是整个发送过程是否有错误。本例中没有考虑返回值。

如果要使用串口中断函数或者DMA函数需要配置cubemx对应的设置:

NVIC设置:

CUBEMX配置串口 cubemx uart_单片机_17


DMA设置:

CUBEMX配置串口 cubemx uart_mcu_18