STM32F407调试错误1:串口吞字节

在主程序中使用数组定义了一串数据,然后通过调用串口发送库函数对数组进行字节发送。

定义:char a[]={0xaa,0x02,0x00,0xab};

串口发送部分代码:

for(i=0;i<4;i++)

{

USART_SendData(USART1, a[i]);

while(USART_GetFlagStatus(USART1, USART_FLAG_TC) != SET);

USART_ClearFlag(USART1, USART_FLAG_TC);

}

运行时,在PC机的串口调试助手上显示: 02 00 ab (16进制)

问题:aa这个数据没了!!!!

原因分析: 程序下载是通过串口1进行的,有可能下载程序在最后没有清空TC标志位,导致第一个数据无法正确发送出去。

修改办法:在串口初始化程序中强制清空TC标志位。

莫名问题:其他非下载串口也出现类似的丢第一个字节的问题。

解决办法1: 在数组a[0]给一个无用的数据,让它丢失吧。。。。哈哈

解决办法2:初始化强制清空TC位。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值