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);
}
上面的中断函数为什么加上延时就会出错?
想了好几天没想明白,有没有遇到相同问题的小伙伴求助
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
刚看了一下,你的发送也是串口1,进中断后关闭串口就发不出去了,试一下用串口2发送应该就行了
哈哈,确实,把1关了再用1发送就发不出去了。关键是里面为什么加了延时就不行了,是不是4楼说的那样中断里不能调用Systick延时,这会导致重入,然后系统就挂掉了。
我是先接收了再延时再发送的
一周热门 更多>