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

2019-07-20 16:07发布

在接收PC串口工具发来的字符串时  大多会丢失后面的数据  收到的 为连续的数据  而且 奇怪的是  收到多少个字符  实际检测到  接收中断触发的次数就是接收到字符的个数,
中断为什么触发次数不够?中断处理函数很简洁  一点不累赘  无延迟等,哪位大神  能指点迷津
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
23条回答
kmjvs
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寄存器是丢失的第六个字符(查看寄存器得到的),但为接收到;

一周热门 更多>