stm32f103单片机控制无刷直流电机,如何设置预分频系数和重装载值以及比较值,使得pwm信号电平50hz频率,高电平持续时间为1100us
时间: 2023-06-11 12:04:40 浏览: 190
PWM输出控制电机电机霍尔脉冲计数实验.rar_PWM 频率 stm32_pwm_主流无刷_电机控制_频率控制
对于stm32f103单片机控制无刷直流电机,首先要选择合适的定时器以及定时器通道。然后,根据控制需要,设置预分频系数和重装载值以及比较值,可以通过以下步骤实现:
1. 首先选择定时器并初始化,比如选择TIM3定时器
2. 根据需要设置预分频系数和重装载值,可以通过下面的代码进行设置:
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
TIM_OCInitTypeDef TIM_OCInitStruct;
TIM_TimeBaseInitStruct.TIM_Prescaler = 168 - 1; // 时钟预分频系数
TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInitStruct.TIM_Period = 2000 - 1; // 重装载值
TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInitStruct.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStruct);
3. 接着设置比较值,可以通过下面的代码进行设置:
TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStruct.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStruct.TIM_Pulse = 900; // 比较值
TIM_OCInitStruct.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OCInitStruct.TIM_OCNPolarity = TIM_OCNPolarity_High;
TIM_OCInitStruct.TIM_OCIdleState = TIM_OCIdleState_Reset;
TIM_OCInitStruct.TIM_OCNIdleState = TIM_OCNIdleState_Reset;
TIM_OC1Init(TIM3, &TIM_OCInitStruct);
4. 最后设置高电平持续时间为1100us,可以通过设置TIM3定时器中比较值的大小来实现。通过下面的代码可以实现:
TIM_SetCompare1(TIM3, 1000); // 将比较值设置为1000
通过设置比较值的大小,可以将高电平持续时间设置为1100us,从而实现pwm信号电平50hz频率,高电平持续时间为1100us的目标。
阅读全文