STM32串口的发送和接收

发布者:Huanle最新更新时间:2024-09-11 来源: elecfans关键字:STM32  串口  发送  接收 手机看文章 扫描二维码
随时随地手机看文章

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后,就说明数据可以被读出。

图片

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

图片


关键字:STM32  串口  发送  接收 引用地址:STM32串口的发送和接收

上一篇:基于STM32的甲醛浓度检测报警proteus仿真设计
下一篇:stm32单片机中使用GPIO口模拟PWM输出解析

推荐阅读最新更新时间:2024-11-17 11:01

msp430 f5529寄存器 串口发送接收
使用的开发板是官方的ti msp430f5529lp 基于官方的例程进行的改动 新增了发送字符串函数 同时可以中断接收 接下来看代码展示 #include msp430.h volatile unsigned int i; void senfchar(char s) { UCA0TXBUF=s; while(!(UCA0IFG&UCTXIFG)); } void sendstring(unsigned char *p) { while(*p!='') { while(!(UCA0IFG&UCTXIFG)); UCA0TXBUF=*p++; } } void
[单片机]
msp430 f5529寄存器 <font color='red'>串口</font><font color='red'>发送</font><font color='red'>接收</font>
基于STM32的单通道示波器制作成功
终于把基于STM32的示波器做出来啦!本来想用外部高速AD做一个1Mhz采样率的示波器,由于自己没有制作示波器经验,手头上也没现成的IC,于是就先利用STM32内部的12位AD做了一个简易示波器,小练一下示波器的制作,以后有时间再继续做一个实用性较强的便携式示波器吧。 该示波器的硬件配置为:3.7V锂电池供电,显示屏为带触摸的16位3.2寸TFT液晶,主控芯片为STM32F103VC。为了省事,信号触发采用软件触发,幅值、周期、XY轴偏移都是通过触控屏来设置。(由于宿舍没有函数发生器,下面演示图片中的波形是由LM358搭出来的简易信号发生器,波形非常不规则) 下为示波器的实物图(后面那块小小的东西为简陋的波形发生器):
[测试测量]
基于<font color='red'>STM32</font>的单通道示波器制作成功
stm32 CAN总线例子
利用stm32实现了1个简单的CAN功能,使用了队列缓存 can.c 文件 #include includes.h #define GPIO_CAN GPIOB #define RCC_APB2Periph_GPIO_CAN RCC_APB2Periph_GPIOB #define GPIO_Pin_RX GPIO_Pin_8 #define GPIO_Pin_TX GPIO_Pin_9 #define GPIO_Remap_CAN GPIO_Remap1_CAN1 #define MAX_MAIL_NUM 3 static u8 CAN_msg_num ; //
[单片机]
STM32Cube的串口配置与使用
1、串口的配置 1)首先打开你的工程,在STM32Cube里面找到USART1,此时串口默认是Disanle的,我们要使能它,选择Asynchronous. 2)然后点击Configuration,就会有一个串口的配置图框,点进去配置串口,如果需要用到中断,选择NVIC进去进行相关配置。 串口配置: 串口中断使能: --------------------------------------------------------------------------------------------------------------------------------------------
[单片机]
STM32Cube的<font color='red'>串口</font>配置与使用
stm32 软件复位
根据《CM3权威指南》,软件复位有两种方法: 1、通过置位NVIC中应用程序中断与复位控制寄存器(AIRCR)的VECTRESET位: LDR R0, =0xE000ED0C ; NVIC AIRCR address LDR R1, =0x05FA0001 ; 置位 VECTRESET位,前面的0x05FA是访问钥匙 STR R1, ; 触发复位序列 deadloop B deadloop ; 该死循环保证后面的指令不可能被执行到 这种复位的作用范围覆盖了整个CM3 处理器中,除了调试逻辑之外的所有角落,但是它不会影响到CM3 处理器外部的任何电路,所以单片机上的各片上外设和其它电路都不受 影响。 2、置位同一个寄存器的SYSR
[单片机]
STM8L101F3P6串口查询接收
/******************************Copyright (c)***********************************/ /* */ /* 老李电子工作 */ /* */ /*------------------------------File Info-------------------------------------*/ /* File name: main.c
[单片机]
stm32之PWM输出
在做四旋翼时出现的一些问题,总结记录一下。 PWM定时器初始化 先上代码:(代码不包括端口的初始化) void Tim2_init(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); /* Compute the prescaler value */ /* Time base configuration */ TIM_TimeBaseStructur
[单片机]
ADI:应用于高级电视的07新产品
2007年10 月25日,ADI公司在北京召开了新品发布会。围绕HDTV领域,推出了几种新产品。 1.为HDTV服务的音频IC。音频处理器包括,ADAV4101,ADAV4312,ADAV4322。D类音频双通道功放包括ADAU1590,ADAU1592,ADAU1513。 2.应用HDTV模拟技术的家庭数字娱乐解决方案 3.支持HDTV无线视频传输的压缩编解码器。 4.内置CEC功能的HDTV发送器。 A.音频处理器的特点是不但具有很多高性能数字接口,还通过片内的解调器和解码器,兼容接收多标准的模拟广播。ADI 公司提供象SigmaStudio这样的图形化设计工具。它们还具有自动音量控制功能,以便在广告宣传期间或当切换通道、动态
[焦点新闻]
小广播
设计资源 培训 开发板 精华推荐

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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