首先我们要解决
硬件问题:
舵机工作电压是多少?
一般供电范围是4.8V-6.0V电压,我这种舵机3V、5V不影响使用,个人觉得不要太大就行了。
舵机的三根线代表什么意思?
红色的是电源正极,黑色的是电源负极,白色的是信号线。有些舵机线是红棕橘三色,分别对应红黑白。
STM32开发板可以直接连接舵机吗?
有人可以直接连接,没有出现什么问题,但是有人可能会出现单片机复位的情况,可能是舵机瞬间驱动电流太大,使供电电压下降,引起单片机复位,我试验一下确实是电压太低了,舵机一开,电压就开始下降,从4点多降到3点多,最好还是分成两个电源,舵机一个,STM32一个,然后再把他们共地,单片机电压就会非常稳定,不会再复位。
舵机发烫可能是什么问题?
接线接反了,或者是舵机受到阻碍了。
舵机代码
我的代码总体框架是:
***PWM(主要)***
***LCD显示(次要)***
***串口改变占空比***
1、 PWM
简单的配置就不说了。
/*******************************************************************************
* 函 数 名 : TIM3_CH1_PWM_Init
* 函数功能 : TIM3通道1 PWM初始化函数
* 输 入 : per:重装载值
psc:分频系数
* 输 出 : 无
*******************************************************************************/
void TIM3_CH1_PWM_Init(u16 per,u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
/* 开启时钟 */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
// RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
/* 配置GPIO的模式和IO口 */
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode