初级会员

- 积分
- 64
- 金钱
- 64
- 注册时间
- 2017-8-19
- 在线时间
- 12 小时
|
1金钱
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);
}
上面的中断函数为什么加上延时就会出错?
想了好几天没想明白,有没有遇到相同问题的小伙伴 求助
|
最佳答案
查看完整内容[请看2#楼]
第二个问题楼上已经说了,延时时间太长了估计是,没延时完又进中断了。第一个问题,这个GPIO的复用,看看相关寄存器,一个GPIO有两个寄存器,寄存器里面多个位控制复用形式。对寄存器进行设置操作比较复杂而不是简单的或操作,所以不能用简单的或运算进行。 对比一下GPIO口的模式寄存器你就明白了。
|