初级会员

- 积分
- 127
- 金钱
- 127
- 注册时间
- 2017-2-9
- 在线时间
- 19 小时
|
发表于 2017-2-14 15:20:56
|
显示全部楼层
楼主的想法很有趣,我也试了试,确实发现了一些问题 我的中断函数如下:
if(USART_GetITStatus(USART2,USART_IT_RXNE))
{
count++;
receiveData = USART_ReceiveData(USART2);
USART_SendData(USART2,receiveData);
while(!(USART_GetFlagStatus(USART2,USART_FLAG_TXE)));
USART_SendData(USART2,count);
while(!(USART_GetFlagStatus(USART2,USART_FLAG_TXE)));
}
这就现象就有趣了,发送01返回0101 发送0102返回01020203、发送010203,返回010402050306、发送01020304返回010702080309、发送0102030405返回010a20b030c050d。有趣了,计数的值在不断的增加,但是在发送01020304的时候只返回到03,04丢失了,而计数的值累加到09,在发送01-05时,04依然丢失,但是计数的值是从09开始计数,也就是说在发送01020304时,USART只进入了三次中断(也就是010203分别进入了中断),而在接受04的时候没有进入中断,也就是说根本就没有接收到04这个值。那这个值去哪里了呢?为什么这个值会丢失? |
|