一、连线
SG90舵机 | stm32 |
信号线(黄色) | PA2 |
红色线 | 5v |
棕色线 | GND |
二、cubemx配置
三、代码
单独开个文件吧,虽然就一个函数,但是最后都堆在一起太难看了
Servo.c
#include "stm32f1xx_hal.h"
#include "tim.h"
void ServoAngle(float angle)
{
uint16_t ccr =0;
if(angle > 180) angle = 180;
if(angle <0) angle = 0;
ccr = angle*11.11 + 500;
TIM2-> CCR3 =ccr;
}
.h
#ifndef __SERVO_H__
#define __SERVO_H__
void ServoAngle(float angle);
#endif
在main.c文件里加入头文件
#include "Servo.h"
在main函数里开启定时器2的PWM通道3
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_3); //Servo
然后就可以随便调用一下封装的ServoAngle()函数了哈,可以放在while循环上面看一下成功没,也可以放在之前写的回调函数里,加几个else if多写几个情况(
放在回调函数里的话,建议在开启通道的下面加一个 ServoAngle(0);这样每次启动都会先恢复到初始值0°,再用蓝牙发送数据控制,更加规范啦。