历史上的今天
返回首页

历史上的今天

今天是:2024年09月21日(星期六)

2019年09月21日 | STM32用USART发送字符串,以USART_FLAG_TXE和USART_FLAG_TC怎么用

2019-09-21 来源:eefocus

一:STM32用USART发送字符串

void UART_Send_Message(u8 *Data)

{

  while(*Data!='')

  {

      USART_SendData(USART1, *Data);

      while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);//读取串口状态

      Data++;

  }

}

 

void main(void)

{

u8 str_buf[500];

memset((char *) &str_buf, 0, sizeof(str_buf));

UART_Send_Message(str_buf);

}


while(SET == USART_GetFlagStatus(USART1,USART_FLAG_RXNE));

含义是:当接收引脚有数据时,状态寄存器的USART_FLAG_RXNE就会为1,此时USART_GetFlagStatus(USART1,USART_FLAG_RXNE)的返回值就为1(SET),若无数据则为RESET。


二:USART_FLAG_TXE和USART_FLAG_TC怎么用


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


特殊情况指的是:


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


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


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


推荐阅读

史海拾趣

深圳杜因特(DOINGTER)公司的发展小趣事

为了进一步提升自身实力和市场竞争力,杜因特积极寻求与国内外一流芯片代工厂、封装测试代工厂的合作。通过紧密的合作关系,杜因特不仅获得了先进的技术支持,还实现了产品质量的稳步提升。同时,公司还积极与国内外知名电子企业建立战略合作关系,共同开拓市场,实现共赢发展。

AverLogic公司的发展小趣事

AverLogic公司深知人才是企业发展的核心竞争力。因此,公司一直致力于人才培养和团队建设。通过定期的培训和学习,公司不断提升员工的技能和素质,打造了一支高效、专业的团队。这支团队在产品研发、市场拓展等方面都发挥了重要作用,为公司的持续发展提供了有力的保障。

Global Navigation Systems公司的发展小趣事
是的,许多现代远程无线防盗报警系统都支持多防区同时报警功能。这意味着系统可以同时监控多个区域或设备,并在任何一个区域或设备发生异常情况时触发报警。这种功能可以大大提高系统的安全性和可靠性,为用户提供更加全面的保护。
中电熊猫(CEC)公司的发展小趣事

在发展过程中,中电熊猫积极寻求与国际巨头的合作。2009年,中电熊猫与日本夏普公司签署协议,引进第六代液晶面板项目。这一合作不仅为中电熊猫带来了先进的技术和管理经验,也为其后续的高世代液晶面板线布局提供了有力支持。通过与夏普等国际巨头的合作,中电熊猫逐渐在液晶显示产业中崭露头角。

AVX公司的发展小趣事

近年来,AVX在汽车领域的应用也取得了显著进展。随着汽车行业的快速发展,对电子元件的需求也日益增长。AVX凭借其卓越的技术和品质,成功为汽车安全性、发动机控制、信息娱乐和底盘控制技术的开发提供了关键支持。AVX的产品广泛应用于各类汽车中,为提升汽车性能和安全性做出了积极贡献。

以上五个故事展示了AVX公司在电子行业中的发展历程和取得的成就。从创立初期到如今的全球化布局,AVX始终坚持以技术创新和市场拓展为核心,不断推动公司的发展。同时,AVX也积极关注可持续发展和绿色技术,为行业的进步做出了积极贡献。

ECLIPTEK公司的发展小趣事

为了进一步扩大市场份额,ECLIPTEK公司决定实施国际扩张战略。公司先后在亚洲、欧洲和北美等地设立了分支机构,并在当地建立了生产基地。为了更好地满足当地客户的需求,ECLIPTEK还实施了本地化战略,根据市场特点调整产品设计和生产流程。这一举措不仅提高了公司的市场覆盖率,还增强了其国际竞争力。

问答坊 | AI 解惑

MP3图纸+固件(ATJ2075方案)

哥们在网上收集的图纸和固件,维修MP3时候就用到它了.这固件我用它成功的修好了两个MP3,确实能用.我可不像某些人,只给个程序,没图纸别人怎么知道是怎么回事啊? ATJ2075方案的MP3图纸+固件 [ 本帖最后由 西门 于 2009-5-12 18:42 编辑 ]…

查看全部问答>

求助:s3c6410的ov9650摄像头问题

我用的华恒的s3c6410开发板,在用摄像头采集数据,并在LCD上观看视频的时候LCD花屏,出现横状条纹。提示信息如下 # /hhtech/app/cam2fb /dev/video13                      ...…

查看全部问答>

求助:用C51系列的单片机模拟一个非标准的SPI接口的从机?

大家知道有什么办法么?怎么才能及时的响应主机clk信号的,就是用单片机对主机的响应返回一定的值?我暂时想到用单片机C51来模拟,不知道大家在这方面有什么建议?不胜感激~~~~~~~…

查看全部问答>

驱动开发群

PCI驱动开发交流.为了大家更好的,实时地交流PCI驱动开发过程中遇到的问题.本人建立一个群:66036721   欢迎从事PCI开发有志之士加入.  群空间有许多PCI开发资料,欢迎大家下载..…

查看全部问答>

6410运行在667频率!

wince6下,怎么才能使S3C6410运行到667的频率呢,改怎么配置,在“S3C6410_SEC_V1\\OAL\\INC\\soc_cfg.h”中需要修改哪些? 当我调整到666时,直接编译不通,在“dvs.h”跳出错误。没有“#define TARGET_ARM_CLK    CLK_667MHz”,我自 ...…

查看全部问答>

寻LED显示屏供应商(不知贴在这边合适不合适)

有朋友最近想做LED广告屏,让帮忙找找有没有合适的供应商。 有意向的可以留下联系方式和公司产品介绍相关链接,谢谢~…

查看全部问答>

这个问题难!!??Wince桌面的快捷方式如何去掉?可用分实在不多了

加入了Word Viewer,桌面上就有一个Word Viewer的快捷方式 如何即保留Word Viewer的功能,由去掉Word Viewer的快捷方式? 桌面上的My Documents快捷方式如何去掉?…

查看全部问答>

超低价380元-基于最新ARM内核Cortex-M3之STM32评估板

     深圳市英蓓特信息技术有限公司*与德国KEIL公司合作,在市场第一时间推出Embest STM32评估板。该开发套件主控芯片采用意法半导体*之STM32F103RB芯片*。此芯片采用ARM公司最新的Cortex-M3内核*。   ...…

查看全部问答>

51DIY-LC测量小工具 后传

如你所知,和所有 电视剧或者小说 的后传一样。往往都比之前难看或者恶心。很遗憾地说,这个LC测量小工具 后传 也如此。当然了,在这里,发这个 昨日黄花,并不是无聊,只是一种 自我激励 ,同时也希望听到一些 专业意见 或者 记录一下 这个 过程— ...…

查看全部问答>

谁有WIFI的技术 我可以用其它技术交换 ?

我想做个WIFI电路,可是没有这方面经验。如果谁有可以和我交换其它方面的技术。   我现有的技术:      1    开关电源的      2    无线通信的&nb ...…

查看全部问答>