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

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

3天内不再提示

STM32请问串口要发送数据“1”该怎么赋值给USART->DR寄存器?

工程师邓生 来源:未知 作者:刘芹 2023-10-26 11:30 次阅读

STM32请问串口要发送数据“1”该怎么赋值给USART->DR寄存器

首先,我们需要了解一下STM32的串口通信模块。

STM32的串口通信模块有三个,分别是USART(通用同步异步收发器)、USART1、USART2。USART是通用串行同步/异步收发器,除TX和RX引脚外,还包含了同步引脚SCLK和从机选择引脚NSS,可以用于SPI通信。

今天,我们主要介绍的是USART。USART支持全双工收发,可以实现异步通信和同步通信。

在STM32的串口通信中,发送数据可以通过往USART->DR寄存器中写入数据来实现。接下来我们来详细介绍一下USART->DR寄存器。

USART->DR是USART数据寄存器,它是一个16位的寄存器,用于发送和接收数据。在发送数据时,将要发送的数据写入USART->DR寄存器即可。在接收数据时,USART->DR寄存器是只读的,需要通过读取USART的状态寄存器SR来获取接收到的数据。

接下来,本文将详细介绍如何通过USART->DR寄存器发送数据“1”。

1. 首先,要开启USART的发送功能,可以通过设置USART的控制寄存器USART_CR1实现。在控制寄存器中,有一个叫做USART_CR1.TE的位值表示要不要启用发送功能,使能该位可以使USART启动发送数据的功能。

2. 设置波特率。波特率是串口通信的重要参数,用于定义串口数据传输速率。波特率设置可以通过设置USART的控制寄存器USART_CR1中的USART_CR1.BRR位进行,该位表示波特率的预分频值。

3. 准备发送的数据。在本例中,需要发送字符“1”,字符在计算机中是以ASCII码的形式来表示的。因此,我们需要将字符“1”的ASCII码赋值给USART->DR寄存器。

4. 判断数据是否发送成功。可以通过判断USART_SR寄存器中的TXE(传输寄存器空标志位)和TC(发送完成标志位)位值来判断发送是否成功。当TXE为1时,表示USART->DR寄存器已经空了,可以继续向其中写入数据。当TC为1时,表示USART已经发送完毕最后一个数据,可以进行下一步操作。

5. 清除标志位。在发送完数据之后,需要清除USART_SR寄存器中的TC标志位,以便下一次使用USART进行数据发送。

以上就是发送数据“1”的详细过程。在实际应用中,为了使串口通信更加可靠,需要对发送的数据进行校验和处理。比如,在发送的数据前面加上一个起始位,以及在数据末尾添加一个校验位等等。当接收方收到数据后,需要对数据进行校验,确保数据的准确性。

总之,STM32的串口通信功能强大,可以实现多种通信方式。在数据的发送和接收过程中,需要注意一些细节问题,以保证数据的正确传输。

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

    关注

    30

    文章

    5037

    浏览量

    117763
  • STM32
    +关注

    关注

    2240

    文章

    10675

    浏览量

    348856
  • 异步收发器
    +关注

    关注

    0

    文章

    36

    浏览量

    10800
  • USART串口
    +关注

    关注

    0

    文章

    31

    浏览量

    6723
收藏 人收藏

    评论

    相关推荐

    stm32F407 USART发送数据,TC不能置位是怎么回事?

    )//原因:SR寄存器值为0x80,TXE置位,但此时TC没有置位,移位寄存器数据没有发送完成 { bitstatus = SET; } else { bitstatus = RE
    发表于 04-25 06:15

    HAL库STM32串口2发送数组串口1异常的原因?

    ,u1buf,21,0xFFFF);//接收到数据马上用串口1发送 HAL_UART_Receive_DMA( huart
    发表于 04-25 06:01

    STM32F4初始化USART中调用HAL_USART_Receive_IT开启接收中断,HAL库中为什么专门发0XFF?

    0xFF。 然后在HAL_USART_RxCpltCallback()中会接收到0x7F(不知从何而来),调用HAL_USART_Transmit()发送,函数返回HAL_OK,但是串口
    发表于 04-18 07:43

    串口3使用USART_SendData(USART1,mydata2)发送串口1一个命令,发送数据会引起接收中断吗?

    串口3使用USART_SendData(USART1,mydata2)发送串口1一个命令,传
    发表于 04-07 07:01

    STM32F103ZET6 HAL库使用串口1DMA空闲中断接收数据时CNDTR寄存器问题如何解决?

    .hdmarx))也就是串口1的CNDTR寄存器会首先减16,然后恢复到给定长度,再次进入中断减去剩余长度(又或当长度超过16字节后空闲中断再次进入)例如限定接收数据长度为0xFFF,
    发表于 03-12 08:35

    STM32F405 DMA+空闲中断接收,DMA_GetCurrDataCounter(DMA1_Stream1)与实际发送数据不符怎么解决?

    USART,每次可以进中断,但是DMA不接收数据,接收寄存器一直为0,DR寄存器里显示是我发的一帧数据
    发表于 03-07 08:28

    如何在sdk的软件开发中寄存器赋值

    请问,在hbird-e-sdk软件开发平台中,怎么在c文件中寄存器赋值,用指针会赋值失败
    发表于 01-10 07:51

    STM32串口发送和接收

    USARTSTM32内部集成的硬件外设,可以根据数据寄存器的一个字节数据自动生成数据帧时序,从
    的头像 发表于 11-10 16:04 653次阅读
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b>的<b class='flag-5'>发送</b>和接收

    STM32里的串口通信

    端。STM32串口资源有USART1、USART2、USART3. 串口的几个重要的参数: 波
    的头像 发表于 11-10 15:58 1551次阅读
    <b class='flag-5'>STM32</b>里的<b class='flag-5'>串口</b>通信

    STM32USART发送数据时如何使用TXE和TC标志呢?

    STM32USART发送数据时如何使用TXE和TC标志呢? USARTSTM32 中非常
    的头像 发表于 10-26 11:31 791次阅读

    stm32串口寄存器USART_DR一次能接收多少位的数据

    stm32串口寄存器USART_DR一次能接收多少位的数据STM32是意法半导体(STMi
    的头像 发表于 10-26 11:31 1212次阅读

    STM32基础知识:串口通信-中断方式

    发送数据时,将一字节数据放入数据寄存器DR;接收数据
    的头像 发表于 10-25 15:21 935次阅读
    <b class='flag-5'>STM32</b>基础知识:<b class='flag-5'>串口</b>通信-中断方式

    求助,关于比较寄存器TIMx_CRR1赋值的疑问

    在控制步进电机的驱动程序里面,将计数自动重装值右移一位赋了CRR1寄存器,为何右移一位呢? TIM_OCInitStructure.T
    发表于 10-07 06:35

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

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

    STM32 CAN接收/发送错误寄存器如何清零?

    STM32 CAN接收/发送错误寄存器如何清零?  CAN总线是一种常用的串行总线,其具有高可靠性、高速率、容错能力强等特点,广泛应用于汽车电子、制造业自动化、工程控制等领域。在CAN总线的标准
    的头像 发表于 09-14 14:22 2820次阅读