STM32F103C8T6的定时器输出PWM,控制舵机和电机,STM32CubeMX和Hal库程序

采用STM32F103C8T6的定时器,输出PWM信号,用于控制模型车的舵机和电机速度。
采用的是STM32CubeMX和Hal库函数程序。

常规舵机和电调的PWM信号

舵机和电调的PWM信号的周期通常为20ms。
对于舵机,高电平部分时间一般为0.5ms~2.5ms范围内调整角度,0.5ms对应0°,1ms对应45°,1.5ms对应90°,2ms对应135°,2.5ms对应180°。
对于电机电调,高电平部分时间一般为1ms~2ms,1.5ms是归中,1ms和2ms分别为前进和后退的满速度。

定时器的PWM输出功能

在这里插入图片描述
在这里插入图片描述

STM32CubeMX配置

STM32F103C8T6定时器时钟设置为72MHz
在这里插入图片描述

采用TIM3定时器产生PWM信号
在这里插入图片描述
PSC设定为719,ARR设定为1999,用于产生20ms脉冲周期。
将遥控器的摇杆电位器通过ADC采集,并转化为0-100数字,此时CRR为0-100数字+100,就可以得到1ms~2ms的高电平占比

程序部分

	HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);
	HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2);
	__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,(controler_data[0]+100));	
	__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_2,(controler_data[1]+100));	

模型车轮子方向归正和马达零速代码块

			__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,150);	
			__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_2,150);