"); //-->
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技术的超低功耗系列单片机
用AT89C2051单片机实验合弦乐
新手必看的单片机知识
长虹R2118A型彩电开关电源(LA单片机)电路
AVR 单片机专栏,资料下载!之二
超低功率高性能新一代产品MSP430F5xx
Microchip发布PIC16F17576单片机(MCU)系列,简化模拟传感器设计
MSP430单片机TIMER_A在产品设计中的应用
GD32E230F6V6实用指南:为下一个项目选择合适单片机
瑞萨RA0单片机连载——面向对象编程之SHT31温度计
16位语言函数工具库
用单片机制作的纯正弦波逆变电源电路
AVR 单片机专栏,资料下载!
双芯智控革命:IGBT与单片机如何重塑智能微波炉
MSP430 电表解决方案
瑞萨单片机技术概述
Microchip推出集成高性能模拟外设的32位PIC32A单片机
《AVR单片机C语言库》
瑞萨RA0单片机连载——PWM实现呼吸灯
利用PIC12C508单片机来实现加密狗技术[转帖]
《ATmega8原理及应用手册》
[转帖]从Cygnal C8051F看8位单片机发展之路
MSP430x2xx4xx系列
单片机语言C51应用实战集锦
5V 单片机与5V 耐压单片机有何区别,为什么至关重要
车规级MCU介绍
语音合成芯片T6668和单片机8031的接口电路图
创维数码5000系列彩电开关电源(AN单片机)电路
倾情奉献:MSP430汇编指令集(中文),详解带实例!
功率监测与控制系统DIY——搭建环境,定时器翻转LED