STM32MxCube配置串口

发布者:tyloo820最新更新时间:2020-05-04 来源: eefocus关键字:STM32MxCub  配置  串口 手机看文章 扫描二维码
随时随地手机看文章

基于上一次将第一章:STM32MxCube 基本使用方法,本章直接讲叙述STM32配置串口2的。


查看STM32F407电路图:可得USART2接在PA2、PA3。


下面新建STM32MxCube工程,开始配置。这里我们配置IO(定义PF9、PF10引脚为LED)、RCC(使用HSE)、USART(串口)。



配置USART(串口)


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


选择USART2模式为“asynchronous”(异步通信)对应的引脚自动转换为USART。

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


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

“综合”配置


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


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



最后生成代码、编译下载,无任何效果。


添加以上代码就能实现:间隔(约0.5S)LED亮灭变化一次,且串口打印数据。


上面是将打印数据装入数组,下面是延时打印数据,同时点亮LED。

下面讲解一下生成的目录结构

在MDK-ARM工程中,可以看到四个目录,分别是:


HAL库:这个库类似于标准外设库(在Drivers目录下)


启动文件startup_stm32f103xe.s:这个文件也和标准外设库里面文件startup_stm32f10x_hd.s类似。


User用户应用:这个目录下是用户添加源代码文件的目录,如果要添加新文件可以在这里添加。


CMSIS微控制器软件接口标准:这个目录也是属于底层的代码(和我之前使用标准外设库建立的软件工程类似,也是位于Drivers目录下)。

打开使用STM32CubeMX新建的软件工程可以看见很多地方有成对的注释代码“USER CODE BEGIN”和“USERCODE END”,这两个注释之间就是用户添加自己代码的区域。如main.c文件下就有多处用户编程区域。


当我们使用STM32CubeMX新建软件工程后,打开软件可以看见里面有很多代码就是通过STM32CubeMX工具自动生成的(是STM32CubeMX的特性),下面大概讲述一下本文生成的代码。


.四个主初始化代码:


HAL库底层初始化



SystemClock_Config();     时钟配置


MX_GPIO_Init();          IO初始化(用户需求)


MX_USART1_UART_Init(); USART初始化(用户需求)


这四个主初始化配置代码中,前面两个基本上是使用STM32CubeMX工具生成都有的代码,后面两个才是用户根据自己需求配置的代码。

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


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

当你使用以前标准外设库开发过STM32,知道时钟初始化代码,那么这个函数应该很熟悉。其实这里的配置就是上面说的RCC配置(时钟树),参数就是时钟树对应的值。看时钟树就很容易理解。


位于main.c文件。

MX_GPIO_Init();


这个函数是我们配置的IO函数(对PF11引脚初始化,很简单),位于main.c文件。


和以前使用标准外设库开发类似,其中的参数就是上面“综合配置” 里设置的。

MX_USART1_UART_Init();


这个函数是我们配置的USART,位于main.c文件。


和以前使用标准外设库开发类似,其中的参数就是上面“综合配置” 里设置的,波特率、数据位数、停止位等。

关键字:STM32MxCub  配置  串口 引用地址:STM32MxCube配置串口

上一篇:STM32CubeMX学习教程之一:GPIO输出之跑马灯
下一篇:STM32Cube微控制器开发软件在GitHub正式上线

推荐阅读最新更新时间:2024-11-13 00:18

正点原子LCD-TFT原理讲解与配置介绍
初始化序列由厂家提供,直接向厂家要 对于这个指令9341的描述是错误的 FSMC的简介 TFTLCD没有地址线没有地址线,而把RS连接到A0-A15其中的任意一根线。当地址线来用,这样就可以吧TFTLCD当成一个SROM来用了。 HADDR不可以直接配置,而是固定死的,我们只能选择不能修改 当bank1接的是16位宽的存储器的时候要右移一位对齐。 这其中NBL是用不到的。A只用到了一个,最重要的还是看最下面这个D信号的时序,它对应我们的ILI9341的读写时序。 FSMC_BCRx 这个寄存器,x代表1-4,对应我们的前面的第一个区到第四个区。
[单片机]
正点原子LCD-TFT原理讲解与<font color='red'>配置</font>介绍
vivo Y55s 5G配置曝光:搭载天玑700处理器,售价1899元
中国电信透露了即将推出的 vivo Y55s 5G 的详细信息。这款手机的设计和规格已经上传到了电信的数据库中,显示出这是一款 5G 中端手机。   vivo Y55s 5G 配备 6.58 英寸 1080x2408 显示屏,带有 8MP 前置水滴摄像头。   该机尺寸为 163.87 x 75.33 x 9.17mm,重量为 199.8g,搭载联发科天玑 700 处理器,配备 8GB RAM 和 128GB 存储空间。   vivo Y55s 5G 背面有两个摄像头,分别为 50MP 主摄和 2MP 副摄。电源按钮中集成了侧边指纹,底部配备 USB-C 接口和 3.5mm 耳机孔。   IT之家了解到,数
[手机便携]
vivo Y55s 5G<font color='red'>配置</font>曝光:搭载天玑700处理器,售价1899元
串口波特率转换的纯软件实现
串口通信,就是RS-232/RS-485通信,要求通信的双方波特率等通信格式一样才可以通信成功。可是在许多情况下,两种不同格式比如不同波特率的串口也要相互通信,这就必须进行串口波特率等格式的转换。本文介绍了如何用纯软件实现串口波特率的转换。 如果串口设备1与串口设备2之间需要通信,但是它们之间的通信波特率不一样。纯软件实现串口波特率的转换的原理就是利用计算机的两个串口,称为串口A和串口B,分别设置为不同的波特率、不同的校验位、不同的数据位和不同的停止位。其中串口A按照串口A设置的波特率等格式接收数据立即从串口B按照串口B设置的波特率等格式发送出去,同样串口B以串口B设置波特率等格式收到的数据立即从串口A以串口A设置的波特率等格式
[嵌入式]
STM32F10x芯片GPIO/AFIO端口配置总结
1、介绍 STM32F10x芯片的GPIO/AFIO配置主要包括以下几方面知识:在时钟控制模块中配置好相应总线时钟,并在总线上使能对应的GPIO口(AFIO口,需要的话)时钟后:根据需求配置相应GPIO端口为对应的输入/输出模式,按需求更改/读取端口的数据;端口功能重映射;若用外部中断,则将中断线与对应引脚链接起来。 STM32F10x芯片的每个GPIO端口都有7个相关的寄存器:2个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR),一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPI
[单片机]
STM8s串口2异步基本收发使用说明
学到定时器部分时,想要将调试信息输出,故先把串口基本功能学了,才能方便后面的调试。 使用某宝上买的STM8S最小系统板,外部晶振为8MHz的。HSI的误差对串口波特率影响比较大,这里使用外部晶振。 开发板芯片是105K4的,只有UART2,这里把UART2的整体框图放在下面,蓝色矩形框是串口异步基本收发所用到的寄存器,可以看到,所要用到的寄存器很少。 这里先说下如何计算波特率以及误差多少: 官方手册已经给出: 这里我使用的波特率为9600bps,然后主时钟为8M,这样分频因子为8M/9600约等于833=0x341,计算的波特率为8M/833=9603.8,误差为(9603.8-9600)/9600*100%约
[单片机]
STM8s<font color='red'>串口</font>2异步基本收发使用说明
S3C6410裸机UART驱动(将printf重定义到串口)
要确保S3C6410已经初始化,一般是使用UBOOT初始化 //串口寄存器 //UART0 #defineULCON0 *((vu32*)0x7F005000) //UART通道0 行控制寄存器 #defineUCON0 *((vu32*)0x7F005004) //UART通道0 控制寄存器 #defineUFCON0 *((vu32*)0x7F005008) //UART通道0 FIFO 控制寄存器 #defineUMCON0 *((vu32*)0x7F00500C) //UART通道0 调制解调器(Modem)
[单片机]
PIC16F690 串口程序
最近又用到PIC16F690这款芯片做项目了,产品调试没界面,所以用串口查看下数据,使用了下异步通信下的串口功能,程序比较简单,记录下,以作参考。 配置部分程序: TRISB = 0B01100000; //设置PB7输出,做TX用;RB5输入RX用 OSCCON=0B01100001; //内部4M晶振 SPBRG=0X19; //设置波特率为9600BPS 参考手册165页 TXSTA=0X24; //使能串口发送,选择异步模式,选择高速波特率 RCSTA=0X90; //使能串口工作,连续接收 RCIE=0X1; //使
[单片机]
PIC16F690 <font color='red'>串口</font>程序
12.2440串口驱动程序设计
串口的功能就是接受数据跟发送数据的,在上一节已经了解串口的引脚信号。但是数据的收发需要一定的条件,也就是串口的初始化。所以所以今天的内容就会被划分为三个部分: 1.串口的初始化: 创建一个uart.c来对串口进行处理,然后把它加入到Makefile工程文件里: 接着就是串口处理程序的实现了。 程序的刚开始是对串口进行初始化,初始化的步骤: 配置引脚功能 设置数据模式 设置工作模式 设置波特率。 1)配置引脚功能: 在2440里的串口底板原理图: 上面的11 TXD0和12 RXD0就是串口的发送和接受引脚,对应的编号里的3,2口,5口是接地的。接下来在核心板原理图里找对应的共用引脚。在核心板原理图里搜
[单片机]
12.2440<font color='red'>串口</font>驱动程序设计
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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