[代码生成]外设的中断初始化代码问题讨论
外设的中断初始化函数,现在是放到外设的其中一个初始化函数里的,外设的配置不同,所放置的初始化函数可能就不同,“不固定和统一”。
问题:是否需要将中断初始化过程单独放到一个函数里?如MF_ATIM_Interrupt_Init()。
@huangzean @SongJuan @mengxiangchen
/**
* @brief ATIM_BDTRMode Initialization function
* @param void
* @retval None
*/
void MF_ATIM_BDTRMode_Init(void)
{
FL_GPIO_InitTypeDef GPIO_InitStruct;
FL_ATIM_BDTR_InitTypeDef BDTRMode_InitStruct;
GPIO_InitStruct.pin = FL_GPIO_PIN_11;
GPIO_InitStruct.mode = FL_GPIO_MODE_DIGITAL;
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
GPIO_InitStruct.pull = FL_DISABLE;
GPIO_InitStruct.remapPin = FL_ENABLE;
FL_GPIO_Init(GPIOD, &GPIO_InitStruct);
BDTRMode_InitStruct.OSSRState = FL_ATIM_OSSR_DISABLE;
BDTRMode_InitStruct.OSSIState = FL_ATIM_OSSI_DISABLE;
BDTRMode_InitStruct.lockLevel = FL_ATIM_LOCK_LEVEL_OFF;
BDTRMode_InitStruct.deadTime = 0x00;
BDTRMode_InitStruct.breakState = FL_DISABLE;
BDTRMode_InitStruct.breakFilter = FL_ATIM_BREAK_FILTER_DIV1;
BDTRMode_InitStruct.breakPolarity = FL_ATIM_BREAK_POLARITY_LOW;
BDTRMode_InitStruct.automaticOutput = FL_DISABLE;
BDTRMode_InitStruct.gatedBrakeSignal_1 = FL_ATIM_BREAK1_GATE_AUTO;
BDTRMode_InitStruct.gatedBrakeSignal_2 = FL_ATIM_BREAK2_GATE_AUTO;
BDTRMode_InitStruct.brakeSignalCombined = FL_ATIM_BREAK_COMBINATION_OR;
FL_ATIM_BDTR_Init(ATIM, &BDTRMode_InitStruct);
/*Start Of Interrupt Initialization*/
FL_ATIM_ClearFlag_Break(ATIM);
FL_ATIM_EnableIT_Break(ATIM);
FL_ATIM_ClearFlag_COM(ATIM);
FL_ATIM_EnableIT_COM(ATIM);
FL_ATIM_ClearFlag_Trigger(ATIM);
FL_ATIM_EnableIT_Trigger(ATIM);
/*End Of Interrupt Initialization*/
}
/**
* @brief ATIM_TimerBase Initialization function
* @param void
* @retval None
*/
void MF_ATIM_TimerBase_Init(void)
{
FL_ATIM_InitTypeDef TimerBase_InitStruct;
TimerBase_InitStruct.clockSource = FL_RCC_ATIM_CLK_SOURCE_APB2CLK;
TimerBase_InitStruct.prescaler = (uint16_t)0x0000;
TimerBase_InitStruct.counterMode = FL_ATIM_COUNTER_DIR_UP;
TimerBase_InitStruct.autoReload = 0xFFFFU;
TimerBase_InitStruct.autoReloadState = FL_DISABLE;
TimerBase_InitStruct.clockDivision = FL_ATIM_CLK_DIVISION_DIV1;
TimerBase_InitStruct.repetitionCounter = 0;
FL_ATIM_Init(ATIM, &TimerBase_InitStruct);
}
/**
* @brief ATIM_ETRMode Initialization function
* @param void
* @retval None
*/
void MF_ATIM_ETRMode_Init(void)
{
FL_GPIO_InitTypeDef GPIO_InitStruct;
FL_ATIM_ETR_InitTypeDef ETRMode_InitStruct;
GPIO_InitStruct.pin = FL_GPIO_PIN_12;
GPIO_InitStruct.mode = FL_GPIO_MODE_DIGITAL;
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
GPIO_InitStruct.pull = FL_DISABLE;
GPIO_InitStruct.remapPin = FL_ENABLE;
FL_GPIO_Init(GPIOB, &GPIO_InitStruct);
ETRMode_InitStruct.useExternalTrigger = FL_DISABLE;
ETRMode_InitStruct.ETRFilter = FL_ATIM_ETR_FILTER_DIV1;
ETRMode_InitStruct.ETRPolarity = FL_ATIM_ETR_POLARITY_NORMAL;
ETRMode_InitStruct.ETRClockDivision = FL_ATIM_ETR_PSC_DIV1;
FL_ATIM_ETR_Init(ATIM, &ETRMode_InitStruct);
}
/**
* @brief ATIM_Channel2 Initialization function
* @param void
* @retval None
*/
void MF_ATIM_Channel2_Init(void)
{
FL_GPIO_InitTypeDef GPIO_InitStruct;
FL_ATIM_IC_InitTypeDef ATIM_InitStruct;
GPIO_InitStruct.pin = FL_GPIO_PIN_5;
GPIO_InitStruct.mode = FL_GPIO_MODE_DIGITAL;
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
GPIO_InitStruct.pull = FL_DISABLE;
GPIO_InitStruct.remapPin = FL_DISABLE;
FL_GPIO_Init(GPIOB, &GPIO_InitStruct);
ATIM_InitStruct.captureState = FL_DISABLE;
ATIM_InitStruct.ICPolarity = FL_ATIM_IC_POLARITY_NORMAL;
ATIM_InitStruct.ICActiveInput = FL_ATIM_CHANNEL_MODE_INPUT_NORMAL;
ATIM_InitStruct.ICPrescaler = FL_ATIM_IC_PSC_DIV1;
ATIM_InitStruct.ICFilter = FL_ATIM_IC_FILTER_DIV1;
FL_ATIM_IC_Init(ATIM, FL_ATIM_CHANNEL_2, &ATIM_InitStruct);
}