串口中断的问题,只有这么多金币

2019-07-20 12:28发布

GPIO_PinAFConfig(GPIOA,GPIO_PinSource9|GPIO_PinSource10,GPIO_AF_USART1);//错误

GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);//正确
GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);


这是为什么,看视频中间用或是可以的,这个地方怎么不行?


void USART1_IRQHandler(void)
{


        u8 cha;
        if (USART_GetITStatus(USART1,USART_IT_RXNE))
       
                cha=USART_ReceiveData(USART1);
        delay_ms(500);    //加上延时就出错
             USART_SendData(USART1,cha);
       
       
        USART_ClearITPendingBit(USART1,USART_IT_RXNE);


}
上面的中断函数为什么加上延时就会出错?

想了好几天没想明白,有没有遇到相同问题的小伙伴求助


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
mrbbn
1楼-- · 2019-07-20 16:58
 精彩回答 2  元偷偷看……
michael91
2楼-- · 2019-07-20 20:45
进入中断后先关闭串口  USART_Cmd(USART1, DISABLE);    //关闭串口接收
退出中断前开启串口     USART_Cmd(USART1, ENABLE);    //开启串口接收

试一下,如果没问题了再给你解释原因
17602515236
3楼-- · 2019-07-20 22:55
 精彩回答 2  元偷偷看……
孤鹜落霞
4楼-- · 2019-07-21 03:36
michael91 发表于 2017-8-19 19:42
进入中断后先关闭串口  USART_Cmd(USART1, DISABLE);    //关闭串口接收
退出中断前开启串口     USART_Cm ...

试了,还是不行
孤鹜落霞
5楼-- · 2019-07-21 08:51
17602515236 发表于 2017-8-19 21:45
我觉得可能是500ms太长了,可能收到的数据太多了,导致串口接收的中断队列太长...然后队列溢出了之后发生异 ...

应该是第二个问题导致的
孤鹜落霞
6楼-- · 2019-07-21 14:23
 精彩回答 2  元偷偷看……

一周热门 更多>