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

    浏览量

    69650
  • USAR
    +关注

    关注

    0

    文章

    4

    浏览量

    8543
  • main
    +关注

    关注

    0

    文章

    38

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

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

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

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

    散热不足对IGBT性能和寿命有什么影响

    在电力电子系统中,IGBT(绝缘栅双极型晶体管)作为核心开关器件,承担着电能转换与控制的关键任务。但很多人容易忽视核心问题 ——散热。事
    的头像 发表于 09-22 11:15 2520次阅读

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

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

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

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

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

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

    ESD防护设计中的10常见误区,你中招了吗?

    在现代电子产品中,ESD(静电放电)防护已成为设计中不可忽视环。然而,即便是经验丰富的工程师,也常会在ESD设计中掉进些看似“理所当然”的误区。以下总结了10在实际设计中最常见
    的头像 发表于 04-24 09:51 738次阅读
    ESD防护设计中的10<b class='flag-5'>个</b>常见误区,你中招了吗?

    STM32学习USART之基础篇(可下载)

    今天分享 USART 设计前的基础知识我们先来了解下有关通信的基本概念:通信:两设备之间进行数据交换时,称这个过程为两设备间的通信并行通信:设备之间的数据是以
    发表于 03-31 15:07 4次下载

    stm32g0b1中的usart5进不去HAL_UARTEx_RxEventCallback,为什么?

    请教一下关于stm32g系列的问题,stm32g0b1中的usart5进不去HAL_UARTEx_RxEventCallback,cudemx上配置跟其他串口也是样的,打开中断了,
    发表于 03-13 06:51

    为什么IIC总线会难住这么多人

    为什么 IIC 总线让很多人头疼?其实可以把它想象成场复杂的 "设备对话游戏",新手容易在这些地方栽跟头:
    的头像 发表于 03-12 10:14 810次阅读
    为什么IIC总线会难住这么<b class='flag-5'>多人</b>?

    如何使用DMA进行USART不定长度接收

    在上讲中,我们对USART进行了简单介绍,并讲解了如何在不使用DMA的情况下进行不定长度数据接收,本讲将着重讲解如何使用DMA进行USART不定长度接收。
    的头像 发表于 02-18 17:01 1360次阅读
    如何使用DMA进行<b class='flag-5'>USART</b>不定长度接收

    为什么很多古建筑、寺容易着火?

    、安全用电隐患 线路老化:古建筑寺庙建成时间久,部分电气线路可能使用多年未更新,绝缘层老化、破损,容易引发漏电、短路事故,进而可能引发火灾。安科瑞+武陈燕+17269603655 过载用电:随着
    的头像 发表于 12-25 15:32 1270次阅读
    为什么<b class='flag-5'>很多</b>古建筑、寺<b class='flag-5'>容易</b>着火?

    高速、RF射频信号的参考平面分析

    对于电子爱好者来说,在PCB设计中,参考平面的问题经常让很多人感到困惑。众所周知,电源平面可以作为参考平面,常见的6层板采用电源层
    的头像 发表于 12-25 11:37 1008次阅读
    高速、RF射频信号的参考平面分析

    电平匹配问题,简单却容易忽视

    导读在电路设计中,电平匹配是基本要求,但常常被忽视,可能导致设备故障和通信异常。本文我们将揭示如何避免因电平不匹配导致的设备故障,并提供实用的设计建议,确保您的电路设计既高效又稳定。电平匹配
    的头像 发表于 12-20 11:34 1842次阅读
    电平匹配问题,简单却<b class='flag-5'>容易</b>被<b class='flag-5'>忽视</b>