2020.08.28 代码定时器初始化总卡死

代码在初始化阶段不停地卡死,单步运行是,总是进入中断函数,但中断标志位并没有置1。

最后发现,问题出在中断函数最后一定要清中断标志位,否则就会不停地进入中断。

如下,错误代码:

void  BASIC_TIM_IRQHandler (void)
{
    if ( TIM_GetITStatus( BASIC_TIM, TIM_IT_Update) != RESET )
    {

        if (FSFANTestCountFlag==1) {
            FSFANTestCountValue=FSFANTestCountValue + 1;
        }

	}
}

改正后的正确代码

void  BASIC_TIM_IRQHandler (void)
{
    if ( TIM_GetITStatus( BASIC_TIM, TIM_IT_Update) != RESET )
    {

        if (FSFANTestCountFlag==1) {
            FSFANTestCountValue=FSFANTestCountValue + 1;
        }
		
	TIM_ClearITPendingBit(BASIC_TIM , TIM_FLAG_Update);

	}
}

此外,在写void SysTick_Handler(void)中断函数时,要写成

extern void TimingDelay_Decrement(void);
void SysTick_Handler(void)
{
	
	 TimingDelay_Decrement();
}

这样delay函数才能被正常使用!

 

你可能感兴趣的:(工作,stm32)