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

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条回答
michael91
1楼-- · 2019-07-21 17:39
孤鹜落霞 发表于 2017-8-21 08:38
试了,还是不行

刚看了一下,你的发送也是串口1,进中断后关闭串口就发不出去了,试一下用串口2发送应该就行了
孤鹜落霞
2楼-- · 2019-07-21 23:21
michael91 发表于 2017-8-21 09:26
刚看了一下,你的发送也是串口1,进中断后关闭串口就发不出去了,试一下用串口2发送应该就行了

哈哈,确实,把1关了再用1发送就发不出去了。关键是里面为什么加了延时就不行了,是不是4楼说的那样中断里不能调用Systick延时,这会导致重入,然后系统就挂掉了。
michael91
3楼-- · 2019-07-22 02:47
 精彩回答 2  元偷偷看……
孤鹜落霞
4楼-- · 2019-07-22 06:32
michael91 发表于 2017-8-21 11:40
你接收了一个字节,结果中断里加了那么长时间延时,当你中断结束时,对方都不知道发到第几个字节了,你这 ...

我是先接收了再延时再发送的
mrbbn
5楼-- · 2019-07-22 07:41
 精彩回答 2  元偷偷看……

一周热门 更多>