|
我使用了一个普通IO口作为红外接收,所以只能通过定时器计算时间,但我发现无法做到微妙級的计算,请问我的配置问题在哪里,感谢各位前辈!
现测试条件为我有一个9ms的电平改变,我通过修改 TimerBaseInitStruct.prescaler 和 TimerBaseInitStruct.autoReload,可以得到结果为:9/90/900的计数,但无法得到9000,只能计数得到2500左右的值
配置如下:
void MF_SystemClock_Config(void)
{
SelRCHFToPLL(FL_RCC_RCHF_FREQUENCY_8MHZ, 64 - 1);
SystemCoreClockUpdate();
}
void MF_GPTIM0_TimerBase_Init(void)
{
/*IO CONFIG*/
FL_GPTIM_InitTypeDef TimerBaseInitStruct;
TimerBaseInitStruct.prescaler = 64-1;
TimerBaseInitStruct.counterMode = FL_GPTIM_COUNTER_DIR_UP;
TimerBaseInitStruct.autoReload = 1-1;
TimerBaseInitStruct.autoReloadState = FL_DISABLE;
TimerBaseInitStruct.clockDivision = FL_GPTIM_CLK_DIVISION_DIV1;
FL_GPTIM_Init(GPTIM0,&TimerBaseInitStruct );
FL_GPTIM_EnableIT_Update(GPTIM0 );
}
|
|