微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 在外部中断里systick系统中断无法触发中断

在外部中断里systick系统中断无法触发中断

时间:10-02 整理:3721RD 点击:
我用系统中断写了一个延时函数,放在main函数里可以正常触发中断(LED灯间隔一秒闪烁),但是我放到外部中断(按键触发)服务函数里就无法进入定时器的中断服务函数void delay_ms(uint16_t ms)
{
        systick_over_cnt = ms;
       
        while(systick_over_cnt != 0);//一直停在这里等待
}
/*这是定时器中断服务的调用函数*/
void delay_cnt_ctrl(void)
{
        if(systick_over_cnt != 0x00)
                systick_over_cnt--;
}
file:///C:\Users\xjg_1\AppData\Roaming\Tencent\Users\473398029\QQ\WinTemp\RichOle\$18F]2DMLYDMFB)FF9BXMAY.png


是优先级设置的不对导致的么?
/*这里是外部中断优先级的设置*/
void NVIC_Config(void)
{
        /*==============????NVIC=====================*/
        NVIC_InitTypeDef        NVIC_InitStruct;
       
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
       
        //éè???D???′
        NVIC_InitStruct.NVIC_IRQChannel = KEY1_EXTI_NVIC_IRQChANNEL;
               
        //éè???÷ó??è??
        NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1;
        //éè??′?ó??è??
        NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;
        //ê1?ü?D??
        NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
       
        NVIC_Init(&NVIC_InitStruct);
        //éè???D???′
        NVIC_InitStruct.NVIC_IRQChannel = KEY2_EXTI_NVIC_IRQChANNEL;
        NVIC_Init(&NVIC_InitStruct);
}
滴答定时器的优先级是默认值

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top