初级会员 
  
	- 积分
 - 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口的模式寄存器你就明白了。 
 
 
 
 
 
 
 |