STM32CubeMX软件工程描述_USART配置过程
2021-01-21 来源:eefocus
STM32CubeMX介绍、下载与安装
STM32CubeMX使用方法及功能介绍
STM32CubeMX新建工程+基本IO配置过程
MDK-ARM下载与安装
关于本文的更多详情请往下看。
Ⅱ、STM32CubeMX新建USART工程
在上一篇文章简单讲述了基于IO新建一个工程的步骤,本文基于USART简单讲述一下STM32CubeMX新建UART串口发送工程。
(我们还是以STM32F103E为例来讲述,如果你的板子是STM32其他型号芯片,在选择芯片时对应即可)
https://yunpan.cn/cMPy7AbArtxQ8 访问密码 e92f
6.添加代码
在main.c文件中添加“延时函数”:
voidTestDelay(uint32_t cnt)
{
while(cnt--);
}
在主函数中添加下图代码:
添加以上代码就能实现:间隔(约0.5S)LED亮灭变化一次,且串口打印数据。
STM32CubeMX_USART配置(修改版),提供给大家下载地址(360云盘):
https://yunpan.cn/cMPKPHVbJtNCB 访问密码 415b
Ⅲ、软件工程说明
接下来讲述一下使用STM32CubeMX新建的软件工程(MDK-ARM版本)。
1.目录结构
在MDK-ARM工程中,可以看到四个目录,分别是:
HAL库:这个库类似于标准外设库(在Drivers目录下)
启动文件startup_stm32f103xe.s:这个文件也和标准外设库里面文件startup_stm32f10x_hd.s类似。
User用户应用:这个目录下是用户添加源代码文件的目录,如果要添加新文件可以在这里添加。
CMSIS微控制器软件接口标准:这个目录也是属于底层的代码(和我之前使用标准外设库建立的软件工程类似,也是位于Drivers目录下)。
2.添加用户代码区域
打开使用STM32CubeMX新建的软件工程可以看见很多地方有成对的注释代码“USER CODE BEGIN”和“USERCODE END”,这两个注释之间就是用户添加自己代码的区域。如main.c文件下就有多处用户编程区域:
3.初始化配置代码描述
当我们使用STM32CubeMX新建软件工程后,打开软件可以看见里面有很多代码就是通过STM32CubeMX工具自动生成的(是STM32CubeMX的特性),下面大概讲述一下本文生成的代码。
A.四个主初始化代码:
HAL_Init(); HAL库底层初始化
SystemClock_Config(); 时钟配置
MX_GPIO_Init(); IO初始化(用户需求)
MX_USART1_UART_Init(); USART初始化(用户需求)
这四个主初始化配置代码中,前面两个基本上是使用STM32CubeMX工具生成都有的代码,后面两个才是用户根据自己需求配置的代码。
这个属于软件工程的标配,主要对初始化(默认)FLASH和NVIC等。
这个函数会使程序不能访问FLASH,也就是为什么我们程序在运行的时候不能下载代码的原因,解决的办法:1.不调用该函数; 2.使MCU处于复位状态下载代码。
当你使用以前标准外设库开发过STM32,知道时钟初始化代码,那么这个函数应该很熟悉。其实这里的配置就是上面说的RCC配置(时钟树),参数就是时钟树对应的值。看时钟树就很容易理解。
位于main.c文件。
D. MX_GPIO_Init();
这个函数是我们配置的IO函数(对PF11引脚初始化,很简单),位于main.c文件。
和以前使用标准外设库开发类似,其中的参数就是上面“综合配置” 里设置的。
E. MX_USART1_UART_Init();
这个函数是我们配置的USART,位于main.c文件。
和以前使用标准外设库开发类似,其中的参数就是上面“综合配置” 里设置的,波特率、数据位数、停止位等。
Ⅳ、说明
以上简单讲述了使用STM32CubeMX生成的软件工程,后续会定期更新使用STM32CubeMX新建各种外设资源工程的文章,敬请等待。
如果是STM32初学者的话,不建议立刻使用这个工具来开发,建议先学习标准外设库开发,因为这个工具生产的代码(HAL库)相比以前标准外设库理解起来相对困难一点。
以上总结仅供参考,若有不对之处,敬请谅解。
- STM32CubeMx普通PWM基本使用方法
- 基于STM32Cubemx HAL 库实现 DMA 驱动 GPIO 高速翻转
- STM32CubeMx配置USART1增加打印功能
- STM32CUBEMX开发GD32F303(17)----内部Flash读写
- STM32CUBEMX开发GD32F303(8)----USART收发配置
- STM32CubeMX介绍,功耗计算,中间件,CAD视图
- 如何通过STM32CubeMX制作外部Flash的烧写驱动 (.stdlr)
- STM32CUBEMX开发GD32F303(15)----外部中断EXTI
- 利用STM32CubeMX解读时钟树
- 使用STM32CubeMx工具编写FreeRTOS的demo程序