stm32f103单片机控制无刷直流电机如何通过设置重装载值和预分频系数从而实现pwm信号电平频率为50hz,高电平持续时间为1100us的目标。写一段代码举例
时间: 2023-06-08 21:07:19 浏览: 133
PWM输出控制电机电机霍尔脉冲计数实验.rar_PWM 频率 stm32_pwm_主流无刷_电机控制_频率控制
这是一个关于STM32F103单片机控制无刷直流电机实现PWM信号的代码段:
```
// 定义所需参数
uint16_t period = 1000; // 设置周期为1000
uint16_t reload = 200; // 设置重装载值为200
uint16_t prescaler = 72; // 设置预分频系数为72
// 配置定时器
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInitStruct.TIM_Period = period - 1;
TIM_TimeBaseInitStruct.TIM_Prescaler = prescaler - 1;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStruct);
// 配置PWM
TIM_OCInitTypeDef TIM_OC_InitStruct;
TIM_OC_InitStruct.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OC_InitStruct.TIM_OCIdleState = TIM_OCIDLESTATE_RESET;
TIM_OC_InitStruct.TIM_OCNIdleState = TIM_OCIDLESTATE_RESET;
TIM_OC_InitStruct.TIM_OutputState = TIM_OutputState_Enable;
TIM_OC_InitStruct.TIM_OutputNState = TIM_OutputNState_Enable;
TIM_OC_InitStruct.TIM_Pulse = reload - 1;
TIM_OC1Init(TIM2, &TIM_OC_InitStruct);
// 启动定时器
TIM_Cmd(TIM2, ENABLE);
```
以上代码实现了在TIM2计时器上配置PWM输出,并且电平频率为50hz,高电平持续时间为1100us。在这里设置的周期为1000,预分频系数为72,重装载值为200,因此周期为1/50000秒,或者说电平频率为50hz。高电平持续时间为1100us,也就是重装载值为200的1/5,所以PWM脉宽为1/5。这样就可以通过PWM输出控制无刷直流电机的速度与方向了。
阅读全文