stm32f429串口中断接收 PC串口工具发送的字符串 会丢失

2019-07-20 16:07发布

在接收PC串口工具发来的字符串时  大多会丢失后面的数据  收到的 为连续的数据  而且 奇怪的是  收到多少个字符  实际检测到  接收中断触发的次数就是接收到字符的个数,
中断为什么触发次数不够?中断处理函数很简洁  一点不累赘  无延迟等,哪位大神  能指点迷津
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
23条回答
kmjvs
1楼-- · 2019-07-21 21:43
 精彩回答 2  元偷偷看……
kmjvs
2楼-- · 2019-07-21 23:32
 精彩回答 2  元偷偷看……
正点原子
3楼-- · 2019-07-22 05:20
回复【8楼】kmjvs:
---------------------------------
这比较奇怪,407的代码就有,429的没用过。。。
kmjvs
4楼-- · 2019-07-22 09:29
回复【15楼】正点原子:
---------------------------------
我用407的  问题一样   你能发一份你的407的  demon给我么!675299413@qq.com   谢谢
kmjvs
5楼-- · 2019-07-22 10:50
回复【5楼】正点原子:
---------------------------------
版主  你看是不是这种原因  
串口中断函数里 有判断接收或发送中断  if (USART_GetITStatus(_pUart->uart, USART_IT_RXNE) != RESET) 
函数读取了CR寄存器中的RXNE 位  
而我写的接收逻辑代码中  在接收串口字符串前 有 while (USART_GetFlagStatus(UART4, USART_FLAG_RXNE) == RESET); 
函数同样读取了CR寄存器中的RXNE位 导致进入中断后  无法进入接收中断  
我实际测了一下  发送9个字符  接收到5个   接收中断响应了5次   而串口中断响应了6次(发送中断已除去),就是后面一次接收中断进入了  但
if (USART_GetITStatus(_pUart->uart, USART_IT_RXNE) != RESET)条件为满足  中断未做任何处理  导致DR寄存器是丢失的第六个字符(查看寄存器得到的),但为接收到;
kmjvs
6楼-- · 2019-07-22 13:02
 精彩回答 2  元偷偷看……

一周热门 更多>