在STM32中控制舵机,实际上就是开发STM32上的PWM功能,这部分功能需要配置STM32的定时器和GPIO复用共功能,然后就是通过修改定时器计数器的比较寄存器的数值来达到控制PWM的高电平占空比的目的;
这里以stm32f103c8t6t定时器2为例,说明一下具体的实现
tim2.c
//头文件
#include "tim2.h"
#include "stm32f10x.h"
#include "stm32f10x_tim.h"
void TIM2_Init(void)//定时器2
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
//定时器2配置
TIM_TimeBaseStructure.TIM_Period =20000-1; //自动重装载值
TIM_TimeBaseStructure.TIM_Prescaler = 72-1;//预分频系数
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
//PWM配置
TIM_OCInitStructure.TIM_