|

楼主 |
发表于 2024-5-14 18:08:35
|
显示全部楼层
你好,我现在将IR跳到PA4脚(MCU是FM33LCO25N),参考例程使用输入捕捉的方式,但每次捕捉到的值都有很大的差异,请问我的配置那里有问题吗?
void MF_GPTIM1_TimerBase_Init(void)
{
FL_GPTIM_InitTypeDef TimerBase_InitStruct;
TimerBase_InitStruct.prescaler = 64-1;
TimerBase_InitStruct.counterMode = FL_GPTIM_COUNTER_DIR_UP;
TimerBase_InitStruct.autoReload = 10000-1;
TimerBase_InitStruct.clockDivision = FL_GPTIM_CLK_DIVISION_DIV1;
TimerBase_InitStruct.autoReloadState = FL_DISABLE;
FL_GPTIM_Init(GPTIM1, &TimerBase_InitStruct);
}
void MF_GPTIM1_Channel3_Init(void)
{
FL_GPIO_InitTypeDef GPIO_InitStruct;
FL_GPTIM_IC_InitTypeDef GPTIM1_InitStruct;
GPIO_InitStruct.pin = FL_GPIO_PIN_4;
GPIO_InitStruct.mode = FL_GPIO_MODE_DIGITAL;
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
GPIO_InitStruct.pull = FL_DISABLE;
GPIO_InitStruct.remapPin = FL_ENABLE;
// GPIO_InitStruct.analogSwitch = FL_DISABLE;
FL_GPIO_Init(GPIOA, &GPIO_InitStruct);
GPTIM1_InitStruct.ICPolarity = FL_GPTIM_IC_POLARITY_NORMAL;
GPTIM1_InitStruct.ICActiveInput = FL_GPTIM_CHANNEL_MODE_INPUT_NORMAL;
GPTIM1_InitStruct.ICPrescaler = FL_GPTIM_IC_PSC_DIV1;
GPTIM1_InitStruct.ICFilter = FL_GPTIM_IC_FILTER_DIV1;
GPTIM1_InitStruct.captureState = FL_ENABLE;
FL_GPTIM_IC_Init(GPTIM1, FL_GPTIM_CHANNEL_3, &GPTIM1_InitStruct);
}
void MF_GPTIM1_Interrupt_Init(void)
{
FL_GPTIM_ClearFlag_CCOverflow(GPTIM1, FL_GPTIM_CHANNEL_3);
FL_GPTIM_ClearFlag_CC(GPTIM1, FL_GPTIM_CHANNEL_3);
FL_GPTIM_EnableIT_CC(GPTIM1, FL_GPTIM_CHANNEL_3);
}
void GPTIM_Loop(void)
{
if(status & IS_CAPTURE)
{
status &= ~IS_CAPTURE;
//处理捕获值
(void)captureValue;
DATAIR[INCounter] = captureValue;
INCounter++;
}
if(status & IS_CAPTURE_OVERFLOW)
{
status &= ~IS_CAPTURE_OVERFLOW;
//捕获溢出事件
//...
}
} |
|