前言
记录一下STM32CubeMX的学习笔记,同时分享给初学的小白,希望一起进步。
一、本地环境
编译环境:KEIL 代码生成:STM32CubeMX 库:HAL MCU:STM32F072
二、开始
1.工程创建
打开 STM32CubeMX,在“New Project”中点击"ACCESS TO MCU SELECTOR"来选择MCU的型号。
之后在对应的搜索框内选择你自己的mcu型号,然后选择即可。
双击芯片进来过后可以看到以下界面: 一共有五个部分: 1、引脚配置,外设配置 2、时钟配置 3、工程配置 4、引脚外设配置下拉选项 5、芯片图
这里我们只讲解UART配置。
2.UART配置
选中“Pinout&Configuration”选项,点击左边的Connectivity选项,选中USART2,并且将模式选为Asynchronous即异步串口模式,其他的的串口模式可以按照需求进行选择。
选择之后,我们可以看到右边的引脚分配图的PA2和PA3已经设置成了USART2_TX和USART2_RX模式。
选择好之后,我们在Configuration界面进行串口配置。 1、NVIC Setting :配置串口中断使能 2、DMA Setting :配置发送接收的DMA模式 3、GPIO Setting :配置串口引脚 4、Parameter Setting :配置串口
我这里没有使用串口中断所以没有配置,如果要使用的话直接Enabled就行了。 这里是串口配置: 波特率:115200 字节长度:8 无校验 一个停止位
2.时钟配置
配置完GPIO后开始配置时钟,这里讲的是没有外部时钟,用的是内部时钟,默认14Mhz的内部时钟。
3.代码生成
时钟配置完毕后,选择“Project Manager”到工程配置界面。 1、配置工程的名称 2、工程存储路径 3、IDE选择(如果是keil工具,选择MDK-ARM) 4、mcu依赖的cube包在哪个目录
接着到“Code Generator”下选择这几个选项来生成工程:
选择好过后我们就可以点击右上角的"GENERATE CODE"按键来生成代码了。 如果提示你的firmware package 缺少直接更新下载即可,如果没网状态,就需要去官网下载依赖包放在之前提到的目录下即可。
我是用以下依赖包生成的工程代码。
3.编译工程
点击编译按钮对工程进行编译。 在 CubeMX 生成的文件中添加用户代码的时候,必须是写在/* USER CODE BEGIN n*/和/* USER CODE END n*/之间。这样如果需要改变 Cube 工程的配置,在重新生成代码时,在这两句注释之间的语 句不会被覆盖。而用户新建或添加的文件不会受到影响。
编译完成后,我们去到 stm32f0xx_hal_uart.c的源文件,然后右键,打开相应的头文件。 找到串口函数: 在main函数中添加以下代码即可:
编译程序,下载运行,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设置: DMA设置:
创作不易,请大佬们点个赞!
有问题请留言讨论!
|