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


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

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

Ⅳ、说明

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

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

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

    关注

    96

    文章

    2953

    浏览量

    70690
  • USAR
    +关注

    关注

    0

    文章

    4

    浏览量

    8587
  • main
    +关注

    关注

    0

    文章

    38

    浏览量

    6639
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    深度解析:电感为何发烫、啸叫?

    电感发烫、啸叫”问题的根源往往不在铜损,而在被很多人忽视的磁芯损耗上。今天我们就用三分钟,透过现象看本质,讲透这个决定电源成败的核心问题。
    的头像 发表于 04-27 10:14 79次阅读
    深度解析:电感为何发烫、啸叫?

    UPS电源是串联还是并联?很多老电工搞错了,文带你彻底搞懂

    困惑:UPS电源到底是该串联,还是该并联?很多人凭字面意思理解,以为像电池样简单连接就行,但实际上,UPS领域的“串联”与“并联”有着截然不同的技术内涵和应用场
    的头像 发表于 03-16 13:31 429次阅读
    UPS电源是串联还是并联?<b class='flag-5'>很多</b>老电工<b class='flag-5'>都</b>搞错了,<b class='flag-5'>一</b>文带你彻底搞懂

    电机容易忽视的有哪几个问题?

    在工业生产和日常生活中,电机作为核心动力设备广泛应用于各类机械系统中。然而,许多用户在使用过程中往往忽视些关键问题,导致电机寿命缩短、效率下降甚至引发安全隐患。
    的头像 发表于 03-13 16:56 626次阅读

    地面5G与太空星链:关于“密度”与“边界”的对决

    坚称“5G才是未来”,有人断言“星链将取代地面网络”。事实上,这场争论的背后,隐藏着忽视的核心问题 被误解的“对手”:两种不同的技术路径 很多人习惯性地将5G和星链放在对立面上,
    的头像 发表于 03-12 12:08 284次阅读

    编写生产级的Service配置文件

    systemctl start xxx 敲了无数遍,但真要从零写 Service 文件丢到生产环境跑,很多人就开始心虚了。网上抄段配置,Type=simple 还是 forkin
    的头像 发表于 02-25 14:24 339次阅读

    别再忽视充电芯片了!HT4056H的这些保护功能真的很重要

    很多人在设计便携设备时,往往把注意力放在主控芯片上,却忽视了充电管理的重要性。HT4056H除了基本的恒流恒压充电功能,还内置了欠压闭锁、电池反接保护、温度监控等多重安全机制。TDFN2×2封装让它能轻松塞进各种小设备里,40V耐压更是给足了安全余量。做产品的朋友,充电安
    的头像 发表于 02-25 11:42 528次阅读
    别再<b class='flag-5'>忽视</b>充电芯片了!HT4056H的这些保护功能真的很重要

    国产MCU工具6月内给原厂添加200+的经验分析

    万能模板”解决所有型号。 模板必须有边界, 而不是靠配置无限扩展。 版本不是负担,而是保护 很多人抗拒“模板版本变多”, 但实际工程中发现: 版本清晰 反而更容易维护 老型号更
    发表于 02-06 09:22

    国产 MCU 原厂支持 200+ 型号的工程实践记录》

    万能模板”解决所有型号。 模板必须有边界, 而不是靠配置无限扩展。 版本不是负担,而是保护 很多人抗拒“模板版本变多”, 但实际工程中发现: 版本清晰 反而更容易维护 老型号更
    发表于 02-06 09:20

    ESP32和STM32哪个更容易学?

    很多人会问,ESP32和STM32到底哪个更容易学?其实这个问题有点像问自行车和汽车哪个更好开——取决于你想去哪儿,以及你享受的是过程还是结果。 ESP32更像是为你搭好舞台的智
    的头像 发表于 01-15 15:53 481次阅读
    ESP32和STM32哪个更<b class='flag-5'>容易</b>学?

    电池包气密性检测设备使用误区,90%的人踩过-岳信仪器

    在电池包生产过程中,气密性检测设备是保障电池包质量的关键工具。然而,很多人在使用这些设备时,常常陷入些误区,影响检测结果的准确性和设备的使用寿命。以下是些常见的使用误区。(1)忽视
    的头像 发表于 11-28 10:41 401次阅读
    电池包气密性检测设备使用误区,90%的人<b class='flag-5'>都</b>踩过-岳信仪器

    远程IO不就是分布式IO?其实很多人理解错了

    、引言 在工业自动化和控制系统中,分布式io和远程io作为两种常见的IO技术,各自具有独特的特点和优势,以下对远程io和分布式io进行详细比较,以明确它们之间的区别。 二、位置范围与连接方式 1
    的头像 发表于 09-28 11:06 924次阅读
    远程IO不就是分布式IO?其实<b class='flag-5'>很多人</b><b class='flag-5'>都</b>理解错了

    LVGL近期很多人问,那它和Qt哪个好?

    最近拜访做工业控制、智能家居的客户时,常被问到同一个问题:嵌入式产品,GUI选LVGL还是Qt? 其实工具选择没有绝对的“好”与“坏”,但选对适配场景的GUI图形用户界面工具,能直接让产品开发效率
    的头像 发表于 09-23 15:54 1836次阅读
    LVGL近期<b class='flag-5'>很多人</b>问,那它和Qt哪个好?

    应急电源就是备用电源?很多人搞错了,区别大到让你惊呆!

    电源
    上海优比施电子科技有限公司
    发布于 :2025年09月12日 11:13:02

    作为电力系统中的核心设备,很多人都不知道它

    ,为读者呈现这关键电力设备的全景图。 ### 、技术演进:从电磁感应到智能化管控 1885年匈牙利工程师代里等三人发明变压器原型机时,或许未曾预料到这个基于电磁感应原理的设备会成为工业文明的基石。现代变压器通过初级
    的头像 发表于 06-25 10:01 964次阅读

    安富利推出个人安全追踪器解决方案

    个人安全问题在日常生活中常常容易忽视,尤其是在独处、探险或是身处偏远地带时,很多人可能未能充分认识到潜在的风险。例如,遇到迷路、自然灾害、意外事故等突发状况时,我们该如何求救?
    的头像 发表于 05-22 13:45 1138次阅读
    安富利推出个人安全追踪器解决方案