STM32F415外部中断触发过后,主函数不再运行,但触发功能正常

2019-07-14 20:29发布

程序没有卡在中断里面,触发函数运行没问题,但触发过后,main中的函数就是不运行了

主函数如下:
  1. int main(void)
  2. {
  3.         /* LED 端口初始化 */
  4.         LED_GPIO_Config();
  5.         delay_init(168);       
  6. //        key_config();
  7.         EXtiX_Init();


  8.         /* 控制LED灯 */
  9.         while (1)
  10.         {
  11. //                if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == 1)
  12.                         LED1( OFF );                         // 亮
  13.                 delay_ms(200);
  14. //                if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == 0)
  15.                         LED1( ON );                  // 灭
  16.                 delay_ms(200);

  17. //                LED3( ON );                         // 亮
  18. //                Delay(0xFFFF);
  19. //                LED3( OFF );                  // 灭       
  20. //               
  21. //                LED4( ON );                         // 亮
  22. //                Delay(0xFFFFFF);
  23. //                LED4( OFF );                  // 灭       
  24.         }
  25. }
复制代码中断函数:
  1. void EXTI0_IRQHandler(void)
  2. {
  3.         static u8 a = 0;
  4.         u32 b = 0;
  5.                 //消抖
  6.         while(b < 0xffff)//注释掉循环问题后正常
  7.         {
  8.                 b = 0;
  9.                 while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_0) == 0)         
  10.                 {
  11.                         b++;
  12. //                        delay_ms(1);
  13.                 }
  14.         }
  15.         a = !a;
  16.         GPIO_WriteBit(GPIOA, GPIO_Pin_10, a); //蜂鸣器翻转        
  17.         EXTI_ClearITPendingBit(EXTI_Line0); //清除LINE0上的中断标志位
  18. }
复制代码但是这句:while(b < 0xffff)//注释掉循环问题后正常
有大神能解答么,多谢



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
dabing89
1楼-- · 2019-07-16 02:47
zpzdd 发表于 2016-8-15 22:34
不过:
if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_0) == 0)        //消抖
        {

if(...)
{
delay();
if(...)
{
//you code
}
}
zpzdd
2楼-- · 2019-07-16 04:08
dabing89 发表于 2016-8-17 09:27
if(...)
{
delay();

额,这跟我发的貌似没什么区别……
dabing89
3楼-- · 2019-07-16 07:33
本帖最后由 dabing89 于 2016-8-17 11:31 编辑
zpzdd 发表于 2016-8-17 11:17
额,这跟我发的貌似没什么区别……
加一下延时看看,试一试吧。。。。。。。。
zpzdd
4楼-- · 2019-07-16 11:55
dabing89 发表于 2016-8-17 11:30
加一下延时看看,试一试吧。。。。。。。。

好的,谢谢你的回答

一周热门 更多>