STM32CubeMX软件工程描述_ USART配置过程

发布者:等放假的Lwj最新更新时间:2023-06-07 来源: elecfans关键字:STM32CubeMX  软件工程  USART  配置过程 手机看文章 扫描二维码
随时随地手机看文章

Ⅰ、写在前面

学习本文之前可以查看我前面的文章:


STM32CubeMX介绍、下载与安装

STM32CubeMX使用方法及功能介绍

STM32CubeMX新建工程+基本IO配置过程

本文接着前面STM32CubeMX文章结合USART实例,讲述关于STM32CubeMX新建USART工程,以及新建好完成的软件工程。最终通过STM32CubeMX工具配置完成实现USART串口通信的软件工程。

本文使用Keil(MDK-ARM) V5软件为编译环境,如果你没有安装最新版本的软件,请安装Keil(MDK-ARM) V5版本的软件,具体过程可以参考我的一篇文章:

MDK-ARM下载与安装

关于本文的更多详情请往下看。

Ⅱ、STM32CubeMX新建USART工程

在上一篇文章简单讲述了基于IO新建一个工程的步骤,本文基于USART简单讲述一下STM32CubeMX新建UART串口发送工程。

(我们还是以STM32F103E为例来讲述,如果你的板子是STM32其他型号芯片,在选择芯片时对应即可)

1.新建工程基本步骤

STM32CubeMX新建工程前面的基本步骤大致如下几步(具体请看我上一篇文章):

1.打开STM32CubeMX软件,点击“新建工程”

2.选择MCU 或选择(ST官方)开发板

3.工程配置

2.Pinout配置

这里我们配置IO(定义PF11引脚为LED)、RCC(使用HSE)、USART(串口)。

A.配置PF11引脚为输出模式

第一步:放大芯片图标,找到PF11(可以通过Find查找)


第二步:配置为输出选中PF11 -> 左键 -> 弹出列表 -> 选中“GPIO_Output”


B.配置RCC

PCC配置有三项,我们这里只配置HSE高速外部时钟,其他两项LSE外部低速时钟、MCO时钟输出默认配置。

选择HSE高速外部时钟为“Crystal”,对应的引脚自动改变,如下图:


C.配置USART(串口)

USART的配置有好几种,本文就以最基础,也是最常见的一种”UART异步串行通信”配置来讲述。

选择USART1模式为“asynchronous”对应的引脚自动转换为USART。

3.Clock配置

对于系统时钟应该都知道它的作用,就是驱动整个芯片工作的心脏,如果没有了它,就等于人没有了心跳。时钟的快慢也就决定了程序的快慢。

STM32的时钟树功能比较强大,分频、倍频可以根据你的需求配置出多种时钟。STM32CubeMX这个工具在这一块也是做的比较人性化的,可以直观的看见具体配置,而且有错误提示(注意:不同型号芯片的时钟树可能不同,但大同小异),我们配置为HSE,如下图:


4.“综合”配置

这里的配置相当于初始化一些配置,集齐了前面的引脚对应的初始化配置,所以叫“综合配置”。

由于我们主要配置了IO 和 USART,所以在这个选项里面,重点关心的就是这两项。

A.IO(PF11)配置


B.USART配置


5.最后生成代码、编译下载

这些步骤不是今天的重点,详细过程可以参看上一篇文章。

生成的原始代码“STM32CubeMX_USART配置(原始版)”可到我360云盘下载:

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工具生成都有的代码,后面两个才是用户根据自己需求配置的代码。

B. HAL_Init();

这个属于软件工程的标配,主要对初始化(默认)FLASH和NVIC等。

这个函数会使程序不能访问FLASH,也就是为什么我们程序在运行的时候不能下载代码的原因,解决的办法:1.不调用该函数; 2.使MCU处于复位状态下载代码。


C. SystemClock_Config();

当你使用以前标准外设库开发过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  软件工程  USART  配置过程 引用地址:STM32CubeMX软件工程描述_ USART配置过程

上一篇:STM32F103 GPIO内部电路图讲解
下一篇:STM32F0xx_ TIM基本延时配置详细过程

推荐阅读最新更新时间:2024-11-02 22:38

STM32L0开发笔记6: STM32CubeMX中定时器的配置方法
本文介绍在STM32CubeMX进行定时器的配置,产生固定时间中断的方法,以TIM2为例,步骤如下: 1、使能TIM2,指定时钟源。 2、查看数据手册,确定该定时器的内部数据总线,本文所引用的定时器内部数据总线为APB1。 3、在时钟配置中确认所选定时器的内部数据总线的时钟频率,我这里是32MHz。 4、在配置页中,选中相应的时钟,在Prescaler中输入预分频系数,在Counter Period中输入溢出系数。例如,本例中时钟为32MHz/32=1MHz,也就是一个周期为1us,我选择溢出系数为1000,则产生中断的时间为1ms。在Prescaler中输入总线频率的整数部分,可以轻易得到1us的
[单片机]
STM32CUBEMX(10)--Flash读写
概述 本例程主要讲解如何对芯片自带Flash进行读写,用芯片内部Flash可以对一些需要断电保存的数据进行保存,无需加外部得存储芯片,本例程采用的是STM32F030R8T6,64K大小的Flash。 硬件准备 首先需要准备一个开发板,这里我准备的是NUCLEO-F030R8的开发板: 选择芯片型号 使用STM32CUBEMX选择芯片stm32f030r8,如下所示: 配置时钟源 HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用内置的时钟源,故都选择Disable选项,如下所示: 配置时钟树 STM32F0的最高主频到48M,所以配置48即可: 串口配置 本次实验使用的串口1进行串口通信,波特率配置为1
[单片机]
<font color='red'>STM32CUBEMX</font>(10)--Flash读写
STM32F429(HAL库)_USART串口发送&接收(使用STM32CubeMX)
一、HAL库相关函数 1、串口发送/接收函数 HAL_UART_Transmit();串口轮询模式发送,使用超时管理机制 HAL_UART_Receive();串口轮询模式接收,使用超时管理机制 HAL_UART_Transmit_IT();串口中断模式发送 HAL_UART_Receive_IT();串口中断模式接收 HAL_UART_Transmit_DMA();串口DMA模式发送 HAL_UART_Transmit_DMA();串口DMA模式接收 2、串口中断函数 HA
[单片机]
STM32F429(HAL库)_<font color='red'>USART</font>串口发送&接收(使用<font color='red'>STM32CubeMX</font>)
SPI IIC USART 区别
第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS) UART(Universal Asynchronous Receiver Transmitter:通用异步收发器) 第二,区别在电气信号线上: SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现 多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。
[单片机]
关于stm32CubeMX的stm32f103编程
0. 准备 安装完成驱动并连接好以后,进入设备管理器可以看到它们都已被识别。 打开putty.exe,选择串口连接,用于查看之后的串口输出。 1. 编写Cube程序,配置 UART 0为9600,8n1,上电后向串口输出“Hello”,在PC上通过串口软件观察结果; 安装完成并打开CubeMX软件,选择New Project,选择 STM32 F103C8Tx并点击ok。 进入工程界面以后我们可以看到右边有 芯片 的引脚图,如下所示。我们点击PA11和PA12,选择GPIO_Input(后面按钮用)。然后在左边的配置中将UART1模式定为Half-Duplex。 在生成代码前,进入工程配置。填写工程名、保存路
[单片机]
关于<font color='red'>stm32CubeMX</font>的stm32f103编程
STM32小白入门(第六天)-------串口通信
今天要讲的是串口通信,个人觉得挺重要的,以后USART、蓝牙通信,485等等都要用到串口,面试官也喜欢问一些串口的问题,比如问你串口参数,数据位几位,波特率多少,还会问你怎样设置串口等等。 一、串口概述 1. 定义 串口通信是一种设备间非常常用的串行,以比特位的形式发送或接收数据,电子工程师经常使用这种方式来调试数据。 2. 开发板硬件用于串口跟PC相连的时候有以下注意事项: A. 使用到usb转串口,所以得安装驱动 B. 跳线帽要进行短接 二、程序设计 1、设置引脚功能复用 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE)
[单片机]
STM32小白入门(第六天)-------串口通信
STM32——PWM基本知识及配置过程
将通用定时器分为四个部分: 1,选择时钟 2,时基电路 3,输入捕获 4,输出比较 本节定时器PWM输出主要涉及到定时器框图右下方部分,即输出比较部分 和上一讲相同,时基时钟来源于内部默认时钟 对此有疑问请参考 : 定时器中断实验 中 定时器时钟选择部分 和 定时器时钟来源部分 什么是PWM 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。 PWM工作过程 每个定时器有四个通道,每一个通道都有一个捕获比较寄存器, 将寄存器
[单片机]
STM32——PWM基本知识及<font color='red'>配置</font><font color='red'>过程</font>
stm32异步串口通讯配置过程
| 串口是一种全双工通讯方式 单工 数据传输只支持数据在一个方向上传输 半双工 允许数据在两个方向上传输,在同一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信 全双工 允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力 异步串口常见连接方式 相同端口数据传输 不同端口数据传输 这里必须保证通讯两端数据共地,此外还需注意不同端口间的电平转换,如TTL、232. | 异步通讯时序图 这里以8位字长为例,进行数据传输时,接收方首先捕捉数据起始位- -由高电平到低电平的数据跳变,低电平会保持一个数据周期(空闲时,数据线保持高电平)
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved