|
1、如果不要刹车功能的PWM输出,是不是刹车功能初始化函数“MF_ATIM_BDTRMode_Init();”可以去掉
2、按例程的方法配置得到的PWM频率是fpwm=8M/(1+1)/(0x999+1)=2458HZ?,分辨率是0-0x999U?
void MF_Config_Init(void)
{
/*FUNCTION CALL*/
MF_ATIM_TimerBase_Init();
MF_ATIM_BDTRMode_Init();
MF_ATIM_Channel1_Init();
}
void MF_ATIM_TimerBase_Init(void)
{
/*IO CONFIG*/
FL_ATIM_InitTypeDef TimerBaseInitStruct;
TimerBaseInitStruct.clockSource = FL_RCC_ATIM_CLK_SOURCE_APB2CLK;
TimerBaseInitStruct.prescaler = (uint16_t)1;
TimerBaseInitStruct.counterMode = FL_ATIM_COUNTER_DIR_UP;
TimerBaseInitStruct.autoReload = 0x999U;
TimerBaseInitStruct.autoReloadState = FL_DISABLE;
TimerBaseInitStruct.clockDivision = FL_ATIM_CLK_DIVISION_DIV1;
TimerBaseInitStruct.repetitionCounter = 0;
FL_ATIM_Init(ATIM,&TimerBaseInitStruct );
}
void MF_ATIM_BDTRMode_Init(void)
{
FL_GPIO_InitTypeDef GPIO_InitStruct;
FL_ATIM_BDTR_InitTypeDef BDTRModeInitStruct;
GPIO_InitStruct.pin = FL_GPIO_PIN_6;
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( GPIOD, &GPIO_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 );
BDTRModeInitStruct.OSSRState = FL_ATIM_OSSR_DISABLE;
BDTRModeInitStruct.OSSIState = FL_ATIM_OSSI_DISABLE;
BDTRModeInitStruct.lockLevel = FL_ATIM_LOCK_LEVEL_OFF;
BDTRModeInitStruct.deadTime = 0x64;
BDTRModeInitStruct.breakState = FL_DISABLE;
BDTRModeInitStruct.breakFilter = FL_ATIM_BREAK_FILTER_DIV1;
BDTRModeInitStruct.breakPolarity = FL_ATIM_BREAK_POLARITY_HIGH;
BDTRModeInitStruct.automaticOutput = FL_DISABLE;
BDTRModeInitStruct.gatedBrakeSignal_1 = FL_ATIM_BREAK1_GATE_AUTO;
BDTRModeInitStruct.gatedBrakeSignal_2 = FL_ATIM_BREAK2_GATE_AUTO;
BDTRModeInitStruct.brakeSignalCombined = FL_ATIM_BREAK_COMBINATION_OR;
FL_ATIM_BDTR_Init(ATIM,&BDTRModeInitStruct );
}
void MF_ATIM_Channel1_Init(void)
{
FL_GPIO_InitTypeDef GPIO_InitStruct;
FL_ATIM_OC_InitTypeDef defaultInitStruct;
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_DISABLE;
FL_GPIO_Init( GPIOB, &GPIO_InitStruct );
GPIO_InitStruct.pin = FL_GPIO_PIN_2;
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 );
defaultInitStruct.OCMode = FL_ATIM_OC_MODE_PWM1;
defaultInitStruct.OCNState = FL_ENABLE;
defaultInitStruct.OCPolarity = FL_ATIM_OC_POLARITY_NORMAL;
defaultInitStruct.OCNPolarity = FL_ATIM_OC_POLARITY_NORMAL;
defaultInitStruct.OCFastMode = FL_DISABLE;
defaultInitStruct.OCPreload = FL_DISABLE;
defaultInitStruct.compareValue = 0x500U;
defaultInitStruct.OCIdleState = FL_ATIM_OC_IDLE_STATE_HIGH;
defaultInitStruct.OCETRFStatus = FL_DISABLE;
defaultInitStruct.OCNIdleState = FL_ATIM_OCN_IDLE_STATE_HIGH;
FL_ATIM_OC_Init(ATIM,FL_ATIM_CHANNEL_1,&defaultInitStruct );
}
|
|