stm32f407 中断延时请请教?????

2019-07-21 05:22发布

void delay_ms(u16 nms)
{
        ntime = nms;
        
        SysTick_Config(168000);   //1ms 产生一次中断
        while(ntime);
        SysTick->CTRL=0x00;

}


void EXTI15_10_IRQHandler(void)
{
        //delay_ms(20);                              //此处加了延时后,中断就不响应了,请问是怎么回事啊????????????????
        if(EXTI_GetITStatus(EXTI_Line13) != RESET)
        {
                if(KEY_INT == 0)
                {
                        led_nvic_test = !led_nvic_test;        

                }                        
                EXTI_ClearFlag(EXTI_Line13);         //与下面的函数选择其一就可以了,实现的功能完全一样
                
        }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
正点原子
1楼-- · 2019-07-21 07:31
仿真看看死在哪里?
maninman1981
2楼-- · 2019-07-21 07:54
 精彩回答 2  元偷偷看……
hpdell
3楼-- · 2019-07-21 08:48
回复【3楼】maninman1981:
---------------------------------
那要怎么设置啊???
hpdell
4楼-- · 2019-07-21 10:45
回复【2楼】正点原子:
---------------------------------
就死在//delay_ms(20); 这个里面出不来了,按键的优先级我已经设置的最低了
正点原子
5楼-- · 2019-07-21 12:36
systick的优先级最低了,所以你在中断里面调用systick延时(中断实现),会导致systick无法进入中断,从而无法完成延时,所以你就一直死在那个while里面了。
hpdell
6楼-- · 2019-07-21 13:28
 精彩回答 2  元偷偷看……

一周热门 更多>