stm32f103c8t6带sg90
时间: 2025-01-30 12:09:39 浏览: 38
### 使用STM32F103C8T6控制SG90舵机
#### 硬件连接
为了使STM32能够成功地向SG90发送PWM信号,需按照特定的方式连接两者的引脚。具体来说,SG90具有三个引脚:电源正极Vcc、接地GND和信号输入端子Signal。这些应分别与STM32上的相应电压源、地面以及任意可配置为TIM功能的GPIO相连[^1]。
#### 软件设置
在软件层面,首先要在STM32CubeMX工具中完成基本外设初始化工作,包括但不限于RCC(复位与时钟控制)、SYS(系统服务)及时钟树等基础模块的调整;接着针对用于生成PWM波形的目标定时器进行细致调节,确保其能输出适合驱动舵机工作的脉宽调制信号[^4]。
#### 编程实践
下面给出一段基于HAL库编写的简单程序片段,展示了怎样利用定时器改变比较寄存器中的数值从而达到转动指定角度的目的:
```c
#include "main.h"
// 定义全局变量或函数声明...
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_TIM2_Init(void);
int main(void){
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_TIM2_Init();
while (true) {
__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, 50); // 设置初始位置
HAL_Delay(1000);
for(int i=50;i<=250;i+=5){ // 循环增加比较值以顺时针旋转舵机
__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1,i);
HAL_Delay(20);
}
for(int i=250;i>=50;i-=5){// 循环减少比较值以逆时针旋转舵机
__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1,i);
HAL_Delay(20);
}
}
}
// 配置系统时钟...
// 初始化GPIO...
// 初始化TIM2...
```
此代码段实现了让舵机从一个极限位置移动到另一个极限位置再返回的过程,每次变化都伴随着短暂延时以便观察动作效果[^3]。
阅读全文
相关推荐


















