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.写法五(正确写法)


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

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

Ⅳ、说明

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

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

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

    关注

    94

    文章

    2927

    浏览量

    66063
  • USAR
    +关注

    关注

    0

    文章

    4

    浏览量

    8340
  • main
    +关注

    关注

    0

    文章

    38

    浏览量

    5968
收藏 人收藏

    评论

    相关推荐

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

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

    STM32抗干扰能力如何?

    ,打算换这个芯片。但是有很多人说STM32抗干扰能力很差,在复杂电池环境下容易死机!各位有没有用它做个类似的产品啊 ?效果如何 ?
    发表于 04-25 06:15

    2024年 IT 行业就业情况能否回春?很多人说道…

    随着鸿蒙生态不断发展壮大,越来越多的企业开始加入其中,对鸿蒙 OS 开发工程师的需求也越来越迫切。
    的头像 发表于 01-24 22:12 756次阅读
    2024年 IT 行业就业情况能否回春?<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 4608次阅读
    uart与<b class='flag-5'>usart</b>区别 <b class='flag-5'>usart</b>可以当uart用吗

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

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

    请问如何使用51单片机发射可调占空比的38Khz红外?

    使用软件PWM,定时器+IO如何实现,50%占空比的容易实现,但是如果是1:3的占空比可能很多人会想到定时中断1us,26US周期,然后调节电平跳变阀值,但是这样不行! 因为中断时
    发表于 11-07 08:12

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

    Q A 问: 为什么陶瓷电容似乎不合规格,但其实不然? 对陶瓷电容(通常也称MLCC,即多层陶瓷电容)而言,“容差”一词是指设备电容与标称值的偏差,这仅仅是由制造过程中的变化引起的。   容差是在严格定义的测试条件下测量的,该过程经过专门设计以排除其他因素对指定设备的测量电容的影响。 将“容差”理解为一个总范围是一种普遍的误解,有人认为无论测量条件如何,测量值都应在标称值的规定容差范围内。许多产品的特性非常稳定,因此
    的头像 发表于 11-01 20:30 537次阅读
    说实话 <b class='flag-5'>很多人</b>对陶瓷电容容差的理解是错误的!

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

    STM32的USART发送数据时如何使用TXE和TC标志呢? USART 是 STM32 中非常重要的外设之一,用于串行通信,其中包括串口通信(RS232、RS485)、SPI 和 I2C 等多种
    的头像 发表于 10-26 11:31 784次阅读

    HK32MCU应用笔记(四)| 关于老版本HK32F103串口USART偶尔出现数据错误

    HK32MCU应用笔记(四)| 关于老版本HK32F103串口USART偶尔出现数据错误
    的头像 发表于 09-18 11:00 793次阅读

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

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

    很多人知道用手机拍照 但是知道他的原理吗

    电路电容DIY
    学习电子知识
    发布于 :2023年09月05日 21:19:05

    电磁炉这二元件,很多人容易搞乱

    电磁炉
    YS YYDS
    发布于 :2023年06月29日 18:44:48

    预防静电:你需要知道的关于静电的知识

    随着人们对静电的认识不断加深,人们已经意识到防静电是一项非常重要的措施。但是很多人并不清楚自己应该了解哪些关于防静电的知识。
    的头像 发表于 05-11 10:32 1158次阅读
    预防静电:你需要知道的<b class='flag-5'>关于</b>静电的知识

    很多人都不知道的环形磁环电感好坏的快速识别方法

    关于环形磁环电感我们要给大家做一个简单的介绍,最近发现很多人在咨询中发现了环形磁环电感如何识别好坏的问题。在本文中,我们将学习如何区分环形磁环电感的质量。 我们也可以同时通过学习一些相关仪器来测量
    的头像 发表于 04-28 23:38 860次阅读