打印
[STM32F4]

中断延时问题请教

[复制链接]
1034|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楼正解,我试了下,程序都死机了

使用特权

评论回复
5
jxmzzr|  楼主 | 2014-6-13 19:00 | 只看该作者
就死在//delay_ms(20); 这个里面出不来了,按键的优先级我已经设置的最低了……

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

460

主题

2188

帖子

12

粉丝