2回答

0收藏

STM32F0 discovery开发板 EXTI和SysTick问题

STMCU STMCU 4543 人阅读 | 2 人回复 | 2013-09-24

纯粹的新手,学习F0。基本照抄的官方EXTI例程,我想在中断处理函数中加上让LED3和LED4亮一会再灭掉,可是执行到亮了以后延时600毫秒时,LED怎么也不灭了。这个Delay_ms用到了SysTick,自己写一个空循环的延时程序就可以正常执行。主程序中调用Delay_ms也正常,这会是什么原因造成的?请高手指教。

void EXTI0_1_IRQHandler(void)
{
  if(EXTI_GetITStatus(EXTI_Line0) != RESET)
  {
    /* Turn on LED3 and LED4 during 1s each time User button is pressed */
    GPIO_WriteBit(LED3_GPIO_PORT, LED3_PIN | LED4_PIN, Bit_SET);
      
    /* wait for 600ms */
    Delay_ms(600);
      
    /* Turn off LED3 and LED4 after 1s each time User button is pressed */
    GPIO_WriteBit(LED4_GPIO_PORT, LED3_PIN | LED4_PIN, Bit_RESET);
                        
    /* BlinkMode: 0 -> 1 -> 2 -> 3 -> 4 -> 5 -> 6, then re-cycle */
    BlinkMode++;
    if(BlinkMode == 7)
    {
       BlinkMode = 0;
    }
   
    /* Clear the EXTI line 0 pending bit */
    EXTI_ClearITPendingBit(EXTI_Line0);
  }
}

分享到:
回复

使用道具 举报

回答|共 2 个

倒序浏览

沙发

QQ哥

发表于 2013-9-24 15:23:12 | 只看该作者

这个要看中断产生没,楼主可以测试下  
我就是QQ哥,QQ哥就是我!
https://www.cirmall.com/bbs/?fromuser=QQ%E5%93%A5
板凳

fdcjjrxl

发表于 2013-9-24 15:42:31 | 只看该作者

按开发板上的user键产生中断了,但delay_ms函数要用到的SysTick中断始终没发生,600不会减少为599,导致后面的灭灯也不执行。
是不是涉及到中断优先级的设置问题?
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条