0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32入门学习笔记之USART驱动实验(上)

jf_78858299 来源:滑小稽笔记 作者:电子技术园地 2023-02-16 10:08 次阅读

6.1 STM32串口简介

在之前的51单片机开发中已经详细地描述过串行通信协议,但是51中的串口有一个缺点,就是为了使用串口的波特率必须将晶振更换为11.0592MHz,如果采用12MHz晶振就会导致波特率误差太大,以致于串口无法正常收发,但是如果使用11.0592MHz晶振又会存在定时器计数误差(即定时器计数不准确),在STM32中很好地解决了这个问题,并且扩展了串口的应用。

STM32F103ZET6最多可提供5路串口,有分数波特率发生器、支持同步单线通信和半双工单线通讯、支持LIN、支持调制解调器操作、智能卡协议和IrDASIRENDEC规范、具有DMA等。STM32的USART模块结构框图如下图所示。

图片

我们可以从框图发现,STM32的波特率是低4位表示小数部分,高12位表示整数部分,这就是为什么STM32可以在不更换晶振的条件下使用串口通信。

6.2 相关寄存器

6.2.1 控制寄存器USART_CR1

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
-
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- UE M WAKE PCE PS PEIE TXEIE TCIE RXNEIE IDLEIE TE RE RWU SBK

Bit 13:USART使能

0:USART分频器和输出被禁止

   1:USART模块使能

Bit 12:字长

0:一个起始位,8个数据位,n个停止位

   1:一个起始位,9个数据位,n个停止位

Bit 11:唤醒的方法

0:被空闲总线唤醒

   1:被地址标记唤醒

Bit 10:检验控制使能

0:禁止校验控制

   1:使能校验控制

Bit 9:校验选择

0:偶校验

   1:奇校验

Bit 8:PE中断使能

0:禁止产生中断

   1:当USART_SR中的PE为1时,产生USART中断

Bit 7:发送缓冲区空中断使能

0:禁止产生中断

   1:当USART_SR中的TXE为1时,产生USART中断

Bit 6:发送完成中断使能

0:禁止产生中断

   1:当USART_SR中的TC为1时,产生USART中断

Bit 5:接收缓冲区非空中断使能

0:禁止产生中断

   1:当USART_SR中的ORE或者RXNE为1时,产生USART中断

Bit 4:IDLE中断使能

0:禁止产生中断

   1:当USART_SR中的IDLE为1时,产生USART中断

Bit 3:发送使能

0:禁止发送

   1:使能发送

Bit 2:接收使能

0:禁止接收

   1:使能接收,并开始搜寻RX引脚上的起始位

Bit 1:接收唤醒

0:接收器处于正常工作模式;

   1:接收器处于静默模式

Bit 0:发送断开帧

0:没有发送断开字符

   1:将要发送断开字符

6.2.2 波特率寄存器USART_BRR

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
-
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
USARTDIV_Mantissa[11:0] USARTDIV_Fraction[3:0]

Bit 15~Bit 4:波特率整数部分

Bit 3~Bit 0:波特率小数部分

注:波特率的计算公式

图片

6.2.3 数据寄存器USART_DR

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
-
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- DATA[8:0]

Bit 8~Bit 0:数据值

包含了发送或接收的数据。由于它是由两个寄存器组成的,一个给发送用TDR,一个给接收用RDR,该寄存器兼具读和写的功能。当USART_CR1PCE位被置位进行发送时,写到MSB的值(根据数据的长度不同,MSB是第7位或者第8位)会被后来的校验位取代。当使能校验位进行接收时,读到的MSB位是接收到的校验位。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6037

    文章

    44557

    浏览量

    635169
  • STM32
    +关注

    关注

    2270

    文章

    10900

    浏览量

    355940
  • USART
    +关注

    关注

    1

    文章

    195

    浏览量

    30850
收藏 人收藏

    评论

    相关推荐

    小白高手都适用,STM32学习教程(入门合集、自学笔记和例程)

    STM32入门教程资料合集:主要内容为STM32入门教程资料合集免费下载包括了:,《USART串口编程》,《如何安装J-Link
    发表于 04-10 14:56

    CubeMX入门STM32 HAL库的学习笔记

    STM32CubeMX是ST官方开发的一款很好用的软件,主要用于STM32系列单片机的硬件驱动层的配置。网上也有一些关于STM32CubeMX的相关教程,对它的相关操作进行说明。从今天
    发表于 08-17 06:55

    STM32入门学习笔记 精选资料分享

    STM32入门学习笔记本文为笔者入门学习过程的记录,只是零散的记录了一些个人不太懂得,觉得需要经
    发表于 08-24 07:56

    AN2557_STM32F10xxx使用USART的应用中编程

    STM2TAN2557_STM32F10xxx使用USART的应用中编程,很好的stm32资料,快来学习吧,免费的哦。
    发表于 04-26 09:43 14次下载

    STM32AN2582_STM32F10xxx USART应用

    STM32AN2582_STM32F10xxx USART应用实例,很好的STM32资料,快来学习
    发表于 04-26 09:51 27次下载

    STM32各模块学习笔记

    STM32个模块学习笔记 目录 STM32笔记之一 中断优先级.......................................
    发表于 11-30 03:32 3160次阅读

    STM32笔记USART串口通信

    关于STM32学习分享第五章 USART串口通信文章目录关于STM32学习分享前言二、代码1.usart
    发表于 11-21 18:21 13次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>笔记</b><b class='flag-5'>之</b><b class='flag-5'>USART</b>串口通信

    STM32学习笔记1——软硬件基础keil5编程与GPIO开发

    STM32学习笔记1——软硬件基础keil5编程与GPIO开发
    发表于 11-30 12:36 4次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b>1——软硬件基础<b class='flag-5'>之</b>keil5编程与GPIO开发

    usart学习笔记

    学习笔记USART介绍:目的:使用USART进行通信,收发数据更多介绍:stm32_CN -> p516页框图:中断请求:T
    发表于 12-04 17:21 10次下载
    <b class='flag-5'>usart</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b>

    STM32USART窗口通讯程序

    !”,上位机接收程序可以使用“串口调试助手“,也可自己编程。3)当上位机给stm32发送“Stop,stm32”后,stm32停止发送。实验步骤安装usb转串口的
    发表于 12-07 11:06 3次下载
    <b class='flag-5'>STM32</b>的<b class='flag-5'>USART</b>窗口通讯程序

    16 . USART 串口通信实验

    USART 串口通信实验我们知道STM32F1 内部含有非常多的通信接口,我们就来学习USART 串口通信。要实现的功能是:
    发表于 12-20 19:22 20次下载
    16 . <b class='flag-5'>USART</b> 串口通信<b class='flag-5'>实验</b>

    STM32USART串口配置——学习笔记(5)

    文章内容根据野火学习教程进行整理,仅仅是学习记录。开发板: 野火STM32F429-挑战者V2官方固件库版本: STM32F4xx_DSP_StdPeriph_Lib_V1.8.0一、
    发表于 12-28 19:00 0次下载
    <b class='flag-5'>STM32</b>的<b class='flag-5'>USART</b>串口配置——<b class='flag-5'>学习</b><b class='flag-5'>笔记</b>(5)

    STM32CubeMX与HAL库学习--ADC与USART的简单练习

    STM32CubeMX与HAL库学习--ADC与USART的简单练习前言STM32CubeMX生成初始化代码在MDK-ARM里编辑代码效果前言最近看了
    发表于 01-12 20:27 13次下载
    <b class='flag-5'>STM32</b>CubeMX与HAL库<b class='flag-5'>学习</b>--ADC与<b class='flag-5'>USART</b>的简单练习

    STM32入门学习笔记USART驱动实验(下)

    串口无法正常收发,但是如果使用11.0592MHz晶振又会存在定时器计数误差(即定时器计数不准确),在STM32中很好地解决了这个问题,并且扩展了串口的应用。
    的头像 发表于 02-16 10:08 790次阅读
    <b class='flag-5'>STM32</b><b class='flag-5'>入门</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b><b class='flag-5'>之</b><b class='flag-5'>USART</b><b class='flag-5'>驱动</b><b class='flag-5'>实验</b>(下)

    STM32入门学习笔记基础定时器实验

    STM32内部共有8个定时器,其中Timer1和Timer8属于高级定时器,Timer2~Timer5属于通用定时器,8个定时器的资源独立,互不影响。
    的头像 发表于 02-16 10:14 1241次阅读
    <b class='flag-5'>STM32</b><b class='flag-5'>入门</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b><b class='flag-5'>之</b>基础定时器<b class='flag-5'>实验</b>(<b class='flag-5'>上</b>)