串口中断接收多个字节求助

2019-10-15 23:12发布

我本来是调试modbus的,发现,我每次发送的数据在串口中断中只能接收一个字节,
void USART2_IRQHandler(void)      
        {
int Res,USART_RX_STA=0,USART_RX_BUF[100];

                if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)   
        {
                USART_ClearFlag(USART2,USART_FLAG_RXNE);   
                Res =USART_ReceiveData(USART2);            
                USART_RX_BUF[USART_RX_STA] = Res;      
                USART_RX_STA++;     
        }       
        }   

我用这个测试了下,串口调试助手16进制,每次发送123456,确实只能收到12就跳出中断了
之前也是,后来我就改成用DMA接收方式接收不定长数据。
请教大家,串口中断方式如何接收不定长数据呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
羽落
1楼-- · 2019-10-16 02:57
int Res,USART_RX_STA=0,USART_RX_BUF[100];

把你的这段设置成全局变量,你现在没进入一次中断就初始化一次,这样没办法接受到全部
feilusia
2楼-- · 2019-10-16 05:14
我个性签名档的博客地址,《STM32之串口》。
Da Wen
3楼-- · 2019-10-16 09:09
接受不定长度数据,可以加入接收超时或者是在数据帧急加结束结束标志
密耳
4楼-- · 2019-10-16 14:00
xp3539989
5楼-- · 2019-10-16 17:40
 精彩回答 2  元偷偷看……

一周热门 更多>