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

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

3天内不再提示

关于 USART很多人都容易忽视的一个问题

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-03-24 11:38 次阅读

Ⅰ、写在前面

今天这篇文章分享的知识点比较少,但比较重要,是大部分人在实际项目开发中都容易忽视,且容易犯下的低级错误。

本文讲述在项目开发中,或在学习中经常遇到USART发送字符串,对方没有接收完成(最后一两字节),也就是最后字节数据丢失了。具体可以看下面章节实验。

关于本文的更多详情请往下看。

Ⅱ、实例工程

为了方便大家学习,提供实验源代码工程给大家参考。

STM32F10x_SART(验证USART发送字符串):

https://yunpan.cn/ckInh8YTwWHVP访问密码 81f9

提供下载的实例实现的功能比较简单,主要是用于验证不同情况下,发送字符的不同。

实例实现功能可以从下面main函数中看的出来,打印数据,进入待机。为了方便用户进入待机不能下载程序,例程使用了一个唤醒按键PC13(可以修改),唤醒有一个LED闪烁和延时,这个期间可以重新下载代码。

Ⅲ、本文要点

这里主要说的是在特殊情况下发送字符软件代码的写法。

特殊情况指的是:

1.调用发送字符串函数“发送完”本机立即掉电;

2.调用发送字符串函数“发送完”从机立即掉电;

【上面两种主要用于芯片电源控制的项目中】

3.调用发送字符串函数“发送完”立刻进入待机或停机;

其实本文主要说的是两个标志位:USART_FLAG_TXE 和 USART_FLAG_TC.

USART_FLAG_TXE发送缓冲区空标志:说明可以往数据寄存器写入数据了,但并不代码数据发送完成了。

USART_FLAG_TC发送完成标志:这个才是代表USART在缓冲区的数据发送完成了,即从机接收到了数据。

这两个标志的区别在于:它们分别表示数据在发送过程中,在两个不同的阶段中的完成情况。TXE 表示数据被从发送缓冲区中取走,转移到的移位寄存器中,此时发送缓冲是空的,可以向其中补充新的数据了。而 TC 则表示最后放入发送缓冲区的数据已经完成了从移位寄存器向发送信号线 Tx 上的转移。所以,判定数据最终发送完成的标志是 TC,而不是 TXE.

下面讲述在不同代码写法下,得到不同实验效果【调试助手接收数据】:

1.常见写法一

这种写法在不是特殊(不掉电、不待机等)情况下,问题不大,USART数据会成功发送出去。 但是在上面说的特殊情况下,问题就来了,代码只将数据放到了发送缓冲区,而没有发送出去就掉电或待机了,这个时候其实最后两个字符是没有发送出去的。

2.常见写法二

这种写法达到的效果和上面存在不同的就是倒数第二个数据发送出去了,也就是只有最后一个字符是没有发送出去的。

3.常见写法三


这种写法达到的效果和上面两种写法有不一样,发送了10个字符。

4.写法四


这种写法按理说可以实现功能,但实际多次试验结果确实第一字节数据丢失了。

5.写法五(正确写法)


这种写法是比较完成,为了保守起见,在特殊情况下使用该写法。。

至此,常见软件写法都给出了源代码和试验效果,请根据自己实际情况写代码验证。

Ⅳ、说明

以上几点内容比较容易出现问题,希望对你项目开发起到帮助作用。

以上总结仅供参考,若有不对之处,敬请谅解。

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

    关注

    95

    文章

    2933

    浏览量

    66288
  • USAR
    +关注

    关注

    0

    文章

    4

    浏览量

    8340
  • main
    +关注

    关注

    0

    文章

    38

    浏览量

    6050
收藏 人收藏

    评论

    相关推荐

    创建Aurix项目失败怎么解决?

    我尝试创建新的 Aurix 项目,但点击底部的 "完成 "后,没有创建新文件,工作区仍然是空的。 我在论坛上搜索了这个问题,发现很多人遇到过这
    发表于 07-23 07:49

    Agv叉车的这4项参数很重要!尤其是第3点!很多人忽略了

    购买无人叉车时,重点需要关注的参数主要包括以下几个方面:  、基本性能参数  1. 载重能力  定义:无人叉车能够承载的最大重量。  重要性:这是选择无人叉车时的首要考虑因素,需根据搬运物品的实际
    的头像 发表于 07-22 14:42 87次阅读
    Agv叉车的这4项参数很重要!尤其是第3点!<b class='flag-5'>很多人</b><b class='flag-5'>都</b>忽略了

    【RISC-V信息速递】反X86和ARM垄断?很多人低估了RISC-V的颠覆性

    原文标题:【RISC-V信息速递】反X86和ARM垄断?很多人低估了RISC-V的颠覆性文章出处:【微信公众号:RISCV国际人才培养认证中心】欢迎添加关注!文章转载请注明出处。
    的头像 发表于 06-08 08:36 47次阅读
    【RISC-V信息速递】反X86和ARM垄断?<b class='flag-5'>很多人</b>低估了RISC-V的颠覆性

    USART上对应RTS的GPIO引脚不需要定义吗?

    大家知道USART中RX和TX这两引脚的功能,它们是USART串行通信最常见和必不可少的两引脚。但是
    发表于 04-25 08:05

    体式贴片电感封装尺寸是不是

    替代的问题。其中,关于不同不同品牌封装尺寸是否样的话题,一直都很多人在讨论。 不同品牌的体式贴片电感,虽然在功能上差不多,但它们的封装尺寸却不相同。比如,某品牌的
    的头像 发表于 04-03 22:45 177次阅读

    电动车火灾频发,如何预防?这很多人忽略了

    电动车火灾频发,选择正规厂家生产的电动车与电池是预防关键。艾迈斯电子提供的第四代智能设备动力连接器LC系列,高载流低温升安全无忧,采用T2紫铜镀银导体和PBT塑壳材质,通过多项测试标准,有效降低火灾风险,为电动车充电安全提供有力保障。
    的头像 发表于 02-29 13:41 254次阅读
    电动车火灾频发,如何预防?这<b class='flag-5'>一</b>点<b class='flag-5'>很多人</b><b class='flag-5'>都</b>忽略了

    很多人质疑鸿蒙,那它算不算国产操作系统?

    它不看好。因为当时鸿蒙确实是Android套壳的,很多人对鸿蒙质疑嘲讽。直到华为鸿蒙2023年9月发布会宣布:鸿蒙不再兼容Android,已经彻底摆脱Android。卧薪尝胆4年之久,终于迎来转机
    发表于 01-17 22:04

    uart与usart区别 usart可以当uart用吗

    USART实际上包含了UART的功能,并增加了支持同步通信的能力。在大多数微控制器中,UART通常是USART功能的部分,USART可以配置为UART模式进行异步通信。
    发表于 01-17 15:46 1.2w次阅读
    uart与<b class='flag-5'>usart</b>区别 <b class='flag-5'>usart</b>可以当uart用吗

    为什么很多人不看好鸿蒙?轻舟已过万重山

    其实这个争议存在很久了。但是到2023年9月份开始,华为秋季发布会上宣布了“鸿蒙不再兼容Android”当时就已经炸开了锅。这个消息让很多不看好鸿蒙的人闭上了嘴。我们作为国人应该支持自己的操作系统
    发表于 01-15 22:44

    为什么5G就像是场口号,很多人觉得劳民伤财。

    网络布线分布随意,而且都被第三方公司所承包,无法绕过第三方公司办理官方宽带,用户共用条光纤网线上网,网速体验极差。
    的头像 发表于 11-28 11:18 293次阅读

    说实话 很多人对陶瓷电容容差的理解是错误的!

    严格定义的测试条件下测量的,该过程经过专门设计以排除其他因素对指定设备的测量电容的影响。 将“容差”理解为总范围是种普遍的误解,有人认为无论测量条件如何,测量值都应在标称值的规定容差范围内。许多产品的特性非常稳定,因此
    的头像 发表于 11-01 20:30 745次阅读
    说实话 <b class='flag-5'>很多人</b>对陶瓷电容容差的理解是错误的!

    相同封装规格的大功率电感线圈性能样吗

    大功率电感线圈是电感产品中非常重要的类型,大功率电感线圈的类型很多,其中大功率电感线圈就是大家非常熟悉的大功率电感线圈封装型号。今天
    的头像 发表于 09-21 14:49 455次阅读

    《通用人工智能:初心与未来》-试读报告

    取代人类了吗? 很多人担心这个问题,其实这个就是有点杞人忧天了。人工智能是服务人类,而不是取代人类。人类是不知道多少万年进化的结果,而计算机是基于逻辑和推理的理论建立的,人类是复杂的是社会的,关于情感
    发表于 09-18 10:02

    线束连接器部件与结构解析

    关于连接器的子部件与结构,很多人只能只知道个大概,但对很多细节还不是很深入,往往小问题就能问倒你,虽然大家
    发表于 09-13 15:37 2084次阅读
    线束连接器部件与结构解析

    光电传感器上的旋钮是这么调的,很多人都不知道

    我们常常能在光电传感器身上看到这两旋钮它们分别代表着什么你知道吗?“L、D”标志的旋钮,是光电传感器的常开、常闭调节;当调节到L端,光电传感器开关为常开型;当调节到D端,光电传感器开关为常闭型
    的头像 发表于 08-08 08:28 1.2w次阅读
    光电传感器上的旋钮是这么调的,<b class='flag-5'>很多人</b>都不知道