[STM32F4] 中断延时问题请教

[复制链接]
1238|4
 楼主| jxmzzr 发表于 2014-6-11 17:21 | 显示全部楼层 |阅读模式
TI, ST, ic, TE, vi
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);         //与下面的函数选择其一就可以了,实现的功能完全一样
               
        }
}

tianli1980 发表于 2014-6-12 10:31 | 显示全部楼层
//delay_ms(20);                              //此处加了延时后,中断就不响应了,请问是怎么回事啊????????????????

在中断里延时,不死才怪。

delay_ms 没机会运行。SysTick优先级最低
想做大牛的小马 发表于 2014-6-12 11:15 | 显示全部楼层
中断本来就要求执行的越快越好,你还加延时。。。延时里还控制另一个中断。。。。
但就这段程序而言,systick中断优先级高一点,应该会在这个中断里进systick中断!但你的systick中断里应该把ntime--才是。。。
SysTick_Config(168000);   //1ms 产生一次中断
         while(ntime);
         SysTick->CTRL=0x00;
mmuuss586 发表于 2014-6-12 12:30 | 显示全部楼层

2楼正解,我试了下,程序都死机了
 楼主| jxmzzr 发表于 2014-6-13 19:00 | 显示全部楼层
就死在//delay_ms(20); 这个里面出不来了,按键的优先级我已经设置的最低了……
您需要登录后才可以回帖 登录 | 注册

本版积分规则

460

主题

2188

帖子

12

粉丝
快速回复 在线客服 返回列表 返回顶部