|
芯片: FM33LCO26N
环境:IAR
一上电,LPtim32 初始化的时候,选择的是外部低速时钟,中断使能,清溢出标志位等一系列操作,但是没有使能计数,这个时候,会自动进一次中断,即使清中断标志位,并且重载值设置很大,还是会马上进中断服务函数。
BSTIM32也有着相同的问题。初始化的时候会自动进一次中断,之后就是正常的计数溢出。进入中断。
比较器也是一样,初始化的时候,设置上升沿触发,之后会自动进一次中断,外部引脚电平没有发生变化。
因为比较器和BSTIM32 我不是一直用的,用的时候开启,不用的时候关闭。
多进一次中断的问题可能在哪,怎么去排查?
下面是BSTIM32 定时器的初始化,时钟源选择的是RCHF, 我没有调用 FL_BSTIM32_Enable(BSTIM32); 并且清除溢出标志位了,但是还是会马上进一次中断。
void bstim32_init(void)
{
/*IO CONFIG*/
FL_BSTIM32_InitTypeDef defaultInitStruct;
NVIC_ConfigTypeDef InterruptConfigStruct;
defaultInitStruct.prescaler = 7;
defaultInitStruct.autoReload = BSTIM32_TICKS_MS(200);
defaultInitStruct.autoReloadState = ENABLE;
defaultInitStruct.clockSource = FL_RCC_BSTIM32_CLK_SOURCE_APB1CLK;
FL_BSTIM32_Init(BSTIM32, &defaultInitStruct);
FL_BSTIM32_SetOnePulseMode(BSTIM32, FL_BSTIM32_ONE_PULSE_MODE_SINGLE); //设置单脉冲模式
FL_BSTIM32_Disable(BSTIM32);
FL_BSTIM32_DisableIT_Update(BSTIM32);
FL_BSTIM32_ClearFlag_Update(BSTIM32);
FL_BSTIM32_EnableIT_Update(BSTIM32);
FL_BSTIM32_WriteCounter(BSTIM32, 0);
InterruptConfigStruct.preemptPriority = 0x03;
NVIC_Init(&InterruptConfigStruct,BSTIM_IRQn);
}
|
|