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

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

3天内不再提示

STM32串口的发送和接收

麦辣鸡腿堡 来源:CSDN博客 作者:藕粉- 2023-11-10 16:04 次阅读

USART是STM32内部集成的硬件外设,可以根据数据寄存器的一个字节数据自动生成数据帧时序,从TX引脚发送出去,也可以自动接收RX引脚的数据帧时序,拼接成一个字节数据,存放在数据寄存器里。

当配置好USART的电路之后,直接读取数据寄存器,就可以自动发送数据和接收数据了。在发送和接收的模块有4个重要的寄存器

发送数据寄存器TDR

发送移位寄存器,把一个字节的数据一位一位的移出去

接收数据寄存器RDR

接收移位寄存器,把一个字节的数据

下方为串口的发送和接收图解:

图片

串口发送

在配置串口的各个参数时,可以选择发送数据帧的数据位的大小,可选8位或9位。

串口发送数据实际上就是对发送数据寄存器TDR进行写操作。

  1. 当串口发送数据时,会检测发送移位寄存器是不是有数据正在移位,如果没有移位,那么这个数据就会立刻转移到发送移位寄存器里。准备发送。

2.当数据移动到移位寄存器时,会产生一个TXE发送寄存器空标志位,该位描述如下。当TXE被置1,那么就可以在TDR写入下一个数据了。即发送下一个数据。

图片

  1. 发送移位寄存器在发送器控制的控制下,向右移位,一位一位的把数据传输到TX引脚。

图片

  1. 数据移位完成后,新的数据就会再次从TDR转移到发送移位寄存器里来,依次重复1-3的过程。通过读取TXE标志位来判断是否发送下一个数据。

串口接收

数据从RX引脚通向接收移位寄存器,在接收控制的控制下,一位一位的读取RX的电平,把第一位放在最高位,然后右移,移位八次之后就可以接收一个字节了。

当一个字节数据移位完成之后,这一个字节的数据就会整体的移到接收数据寄存器RDR里来。

在转移时会置RXNE接收标志位,即RDR寄存器非空,下方为该位的描述。当被置1后,就说明数据可以被读出。

图片

下图即为串口接收的工作流程

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5336

    浏览量

    120235
  • 数据
    +关注

    关注

    8

    文章

    7006

    浏览量

    88944
  • STM32
    +关注

    关注

    2270

    文章

    10896

    浏览量

    355757
  • 串口通信
    +关注

    关注

    34

    文章

    1624

    浏览量

    55510
收藏 人收藏

    评论

    相关推荐

    STM32串口发送数据和接收数据方式总结

    STM32串口发送数据和接收数据方式总结
    的头像 发表于 09-19 09:14 7613次阅读
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b><b class='flag-5'>发送</b>数据和<b class='flag-5'>接收</b>数据方式总结

    stm32串口接收串口发送的实现过程是怎样的

    嵌入式的底层是如何实现的?stm32串口接收串口发送的实现过程是怎样的?
    发表于 12-07 07:06

    基于CubeMX HAL库的STM32串口发送接收配置过程分享

    基于CubeMX HAL库的STM32串口发送接收配置过程分享
    发表于 12-10 06:43

    STM32串口是如何去实现数据发送接收

    什么是串口复位呢?STM32串口是如何去实现数据发送接收的?
    发表于 12-10 06:16

    STM32串口发送数据与接收数据浅析

    STM32串口发送数据最直接的方式是什么呢?STM32串口接收数据最直接的方式是什么呢?
    发表于 02-18 06:09

    STM32串口接收陀螺仪数据-2016-04-15

    stm32f103串口接收MPU6050数据
    发表于 05-23 10:24 21次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b><b class='flag-5'>接收</b>陀螺仪数据-2016-04-15

    STM32CUBEMX配置教程(八)STM32串口轮询发送中断接收+重定义+优化

    STM32CUBEMX配置教程(八)STM32串口轮询收发+重定义基于STM32H743VI使用STM32CUBEMX两年了,始终觉得这个工
    发表于 11-19 13:36 11次下载
    <b class='flag-5'>STM32</b>CUBEMX配置教程(八)<b class='flag-5'>STM32</b><b class='flag-5'>串口</b>轮询<b class='flag-5'>发送</b>中断<b class='flag-5'>接收</b>+重定义+优化

    STM32串口通讯

    STM32串口通讯USART串口通信实践USART串口通信实践1、实验环境参考资料 野火官方的 《零死角玩转STM32—F103指南者
    发表于 12-06 20:21 13次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b>通讯

    stm32串口代码详解

    stm32串口
    发表于 12-24 18:38 52次下载
    <b class='flag-5'>stm32</b><b class='flag-5'>串口</b>代码详解

    STM32踩坑:STM32串口发送乱码问题

    STM32串口发送乱码问题小编是一个嵌入式初学者,才学没多久,将近两个月的样子,在学习过程中遇到了一些问题,在这里给大家分享一下解决方案。今天要分享的问题是 STM32
    发表于 12-24 18:40 10次下载
    <b class='flag-5'>STM32</b>踩坑:<b class='flag-5'>STM32</b><b class='flag-5'>串口</b><b class='flag-5'>发送</b>乱码问题

    stm32串口

    DMA发送缓存区bsp_usart.cbsp_usart.hisr.c基于stm32f103zet6串口发送使用DMA发送大致说明USART
    发表于 12-24 18:55 20次下载
    <b class='flag-5'>stm32</b><b class='flag-5'>串口</b>

    STM32串口发送数据和接收数据方式总结(转)

    之前写了篇关于ESP8266使用AT指令进行互相通讯的实验,在写STM32串口接发数据的程序中,觉得有必要将之前学的有关于串口方面的使用经历加以总结。串口
    发表于 12-24 18:59 18次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b><b class='flag-5'>发送</b>数据和<b class='flag-5'>接收</b>数据方式总结(转)

    21电赛02 stm32串口发送接收

    stm32串口接收具体协议看之前的01//头文件部分typedef struct{ long int x_cm; long int y_cm; int openmv;}OPMV_info
    发表于 12-24 19:16 0次下载
    21电赛02 <b class='flag-5'>stm32</b><b class='flag-5'>串口</b><b class='flag-5'>发送</b><b class='flag-5'>接收</b>

    一个严谨的STM32串口DMA发送&amp;接收(1.5Mbps波特率)机制

    一个严谨的STM32串口DMA发送&接收(1.5Mbps波特率)机制
    的头像 发表于 09-18 10:58 2293次阅读
    一个严谨的<b class='flag-5'>STM32</b><b class='flag-5'>串口</b>DMA<b class='flag-5'>发送</b>&amp;<b class='flag-5'>接收</b>(1.5Mbps波特率)机制

    STM32串口中断接收不定长报文介绍

    本项目中,需要使用STM32的USART6串口与FPGA板(下位机)通信,需要发送接收数据,有报文应答机制。
    的头像 发表于 10-26 11:01 1074次阅读
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b>中断<b class='flag-5'>接收</b>不定长报文介绍