小白求助!串口怎么接收字符串?

2019-07-21 04:22发布

我用的蓝牙模块,想接收串口助手发送给蓝牙的字符串,
假如串口助手发送"stm32"的话会进入几次中断?

下面是我的串口中断函数

u8 buf[50];

[mw_shl_code=c,true]

void USART1_IRQHandler(void)                        //串口1中断服务程序
{
        static u8 cnt = 0;
        u8 r;
        if(USART_GetITStatus(USART1, USART_IT_RXNE) == SET)  //接收中断
        {
                r =USART_ReceiveData(USART1);//读取接收到的数据
                buf[cnt++] = r;
                buf[cnt] = '';
                printf("%s",buf);
                if(r == ' ')
                cnt = 0;
//                while(USART_GetFlagStatus(USART1,USART_FLAG_TC) != SET);
        }
        USART_ClearFlag(USART1,USART_FLAG_RXNE);
}        
[/mw_shl_code]

发送"stm32"第一次返回了ssmsm2,第二次发送"stm32"返回了sm2s

之后就再发就没反应了。。
不明白怎么回事

接收字符串
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
12条回答
Gwvfbukn
2019-07-21 09:34
void USART1_IRQHandler(void)                        //串口1中断服务程序
{
        static u8 cnt = 0;
        u8 r;
        if(USART_GetITStatus(USART1, USART_IT_RXNE) == SET)  //接收中断
        {
                r =USART_ReceiveData(USART1);//(USART1->DR);        //读取接收到的数据
                buf[cnt++] = r;
                buf[cnt] = '';
                printf("%s",buf);
                if(r == ' ')
                cnt = 0;
//                while(USART_GetFlagStatus(USART1,USART_FLAG_TC) != SET);
        }
        USART_ClearFlag(USART1,USART_FLAG_RXNE);
}


上面的代码显示好像有点问题

一周热门 更多>