专栏中心

EEPW首页 > 专栏 > 串口发送的这几种写法,你用过几种?

串口发送的这几种写法,你用过几种?

发布人:鱼鹰谈单片机 时间:2021-09-20 来源:工程师 发布文章

STM32用USART发送字符串,以USART_FLAG_TXE和USART_FLAG_TC怎么用

一:STM32用USART发送字符串

void UART_Send_Message(u8 *Data)
{
  while(*Data!='\0')
  {
      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.

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

常见写法一 

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

2.常见写法二 

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

3.常见写法三 

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

4.写法四 

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

5.写法五(正确写法) 

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

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

————————————————

本文转载至网络

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词: 单片机

相关推荐

介绍采用 nanoWatt XLP技术的超低功耗系列单片机

新手必看的单片机知识

嵌入式系统 2025-04-07

超低功率高性能新一代产品MSP430F5xx

视频 2009-10-16

Microchip发布PIC16F17576单片机(MCU)系列,简化模拟传感器设计

GD32E230F6V6实用指南:为下一个项目选择合适单片机

瑞萨RA0单片机连载——面向对象编程之SHT31温度计

16位语言函数工具库

双芯智控革命:IGBT与单片机如何重塑智能微波炉

MSP430 电表解决方案

视频 2009-10-16

瑞萨单片机技术概述

视频 2011-06-13

Microchip推出集成高性能模拟外设的32位PIC32A单片机

《AVR单片机C语言库》

瑞萨RA0单片机连载——PWM实现呼吸灯

《ATmega8原理及应用手册》

MSP430x2xx4xx系列

单片机语言C51应用实战集锦

资源下载 2007-11-21

5V 单片机与5V 耐压单片机有何区别,为什么至关重要

车规级MCU介绍

倾情奉献:MSP430汇编指令集(中文),详解带实例!

功率监测与控制系统DIY——搭建环境,定时器翻转LED

更多 培训课堂
更多 焦点
更多 视频

技术专区