动态改变舵机角度
上一个实验中,我们配置了PWM波的高电平时长计数个数为1000,即时长为1ms,对应旋转角度为45°,在本实验中,我们来动态改变 PWM 占空比,使舵机在0°到180之间来回旋转。
编写如下代码:
int main(void)
{
/* USER CODE BEGIN 1 */
uint16_t pluse = 500;
/* USER CODE END 1 */
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_TIM16_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
//产生PWM,舵机转动
HAL_TIM_PWM_Start(&htim16,TIM_CHANNEL_1);
//1s后改变舵机角度,增加45°
HAL_Delay(1000);
pluse += 500;
if(pluse == 3000)
{
//如果舵机角度大于180°,回零
pluse = 500;
}
//设置PWM占空比
__HAL_TIM_SetCompare(&htim16, TIM_CHANNEL_1, (uint16_t)pluse);
}
/* USER CODE END 3 */
}
|