请教为什么systick不能进中断

2019-07-25 11:17发布

volatile unsigned long TimingDelay; // 延时时间,注意定义为全局变量
void SysTick_Handler(void)
{               
        SysTick->VAL=0;
        if (TimingDelay != 0x00)
        {
                        TimingDelay--;
        }
}

void delay_init()         
{
        SysTick->CTRL |= SysTick_CLKSource_HCLK;                        //选择内部系统时钟源
        SysTick->VAL=0;
        SysTick->LOAD=70;                                                                                                                //8M  10us  时间
        SysTick->CTRL&=0xfffffffe;                                                                                                //关闭中断
}                                                                    

                                          
void delay_us(u32 nus)
{       
        TimingDelay=nus;
        SysTick->VAL=0;
        SysTick->CTRL|=0x01 ;      //开始倒数
        while(TimingDelay!=0){};
        SysTick->CTRL&=0xfe ;      //关闭倒数
}

void delay_ms(u16 nms)
{       
        delay_us(nms*100);
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。