您的位置:首页 > 游戏 > 游戏 > 天眼查在线查询企业信息查询_网络基础培训_产品运营主要做什么_sem推广竞价托管公司

天眼查在线查询企业信息查询_网络基础培训_产品运营主要做什么_sem推广竞价托管公司

2025/5/17 12:21:38 来源:https://blog.csdn.net/liwangsb2/article/details/146510477  浏览:    关键词:天眼查在线查询企业信息查询_网络基础培训_产品运营主要做什么_sem推广竞价托管公司
天眼查在线查询企业信息查询_网络基础培训_产品运营主要做什么_sem推广竞价托管公司
主题内容教学目的/扩展视频
舵机控制电路连接,驱动原理,驱动程序,调用控制。能写入角度值,为小车开发做准备。

师从洋桃电子,杜洋老师


📑文章目录

    • 一、PWM控制舵机原理
      • 1.1 舵机控制信号特性
      • 1.2 定时器PWM模式
    • 二、硬件系统架构
      • 2.1 硬件连接方案
    • 三、核心代码解析
      • 3.1 主程序逻辑框架
      • 3.2 PWM初始化函数详解
    • 四、关键技术点解析
      • 4.1 周期与占空比计算
      • 4.2 重映射配置
    • 五、扩展应用设计
      • 5.1 多通道舵机控制
      • 5.2 中央对齐模式应用
    • 六、调试与优化
      • 6.1 示波器测量要点
      • 6.2 常见问题排查
    • 七、相关资源


▲ 回顾上期🔍STM32驱动SG90舵机全攻略:从原理到代码实现(上) | 零基础入门STM32第八十二步

▲ 回顾上期🔍STM32驱动SG90舵机全攻略:从波形生成到实战应用(中上) | 零基础入门STM32第八十三步


一、PWM控制舵机原理

1.1 舵机控制信号特性

典型舵机控制信号参数:

参数数值范围对应角度
周期20ms (50Hz)固定不变
高电平时间0.5ms-2.5ms0°-180°
(图1:波形对应角度示意图)

1.2 定时器PWM模式

STM32提供两种PWM模式:

/* PWM模式选择 */
TIM_OCMode_PWM1: 向上计数CNT<CCR有效,向下计数CNT>CCR无效
TIM_OCMode_PWM2: 向上计数CNT<CCR无效,向下计数CNT>CCR有效

二、硬件系统架构

2.1 硬件连接方案

模块连接引脚功能说明
舵机信号线PB0 (TIM3_CH3)PWM信号输出
OLED显示屏I2C接口角度显示
触摸按键独立GPIO角度选择控制

三、核心代码解析

3.1 主程序逻辑框架

int main(void) {// 系统初始化RCC_Configuration();  // 时钟配置TIM3_PWM_Init(59999,23); // PWM初始化(20ms周期)while(1) {// 按键扫描与角度设置if(按键A按下) Set_Angle(0);   // 0.5msif(按键B按下) Set_Angle(45);  // 1.5msif(按键C按下) Set_Angle(90);  // 2.0ms if(按键D按下) Set_Angle(180); // 2.5ms}
}void Set_Angle(uint8_t angle) {uint16_t pulse = 1500 + angle*33; // 角度转脉冲计算TIM_SetCompare3(TIM3, pulse);     // 修改CCR寄存器值
}

3.2 PWM初始化函数详解

void TIM3_PWM_Init(u16 arr, u16 psc) {// GPIO配置GPIO_InitTypeDef GPIO_InitStruct = {.GPIO_Pin = GPIO_Pin_0,.GPIO_Mode = GPIO_Mode_AF_PP,  // 复用推挽输出.GPIO_Speed = GPIO_Speed_50MHz};GPIO_Init(GPIOB, &GPIO_InitStruct);// 定时器基础配置TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct = {.TIM_Period = arr,        // 自动重装载值.TIM_Prescaler = psc,     // 预分频系数.TIM_CounterMode = TIM_CounterMode_Up // 向上计数模式};TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStruct);// PWM通道配置TIM_OCInitTypeDef TIM_OCInitStruct = {.TIM_OCMode = TIM_OCMode_PWM1,.TIM_OCPolarity = TIM_OCPolarity_High,.TIM_OutputState = TIM_OutputState_Enable};TIM_OC3Init(TIM3, &TIM_OCInitStruct);TIM_Cmd(TIM3, ENABLE); // 启动定时器
}

四、关键技术点解析

4.1 周期与占空比计算

计算公式:
在这里插入图片描述

示例参数分析:

TIM3_PWM_Init(59999, 23);
/* 
TIM_CLK = 72MHz
T = (59999+1)*(23+1)/72,000,000 = 0.02s (50Hz)
脉冲分辨率 = 20ms / (59999+1) ≈ 0.33μs
*/

4.2 重映射配置

// 重映射配置函数
void GPIO_Remap_Config(void) {GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE); // 部分重映射/* 默认通道映射:TIM3_CH1 -> PA6部分重映射:TIM3_CH1 -> PB4*/
}

五、扩展应用设计

5.1 多通道舵机控制

// 扩展TIM3其他通道
#define SERVO_NUM 3
uint16_t servo_pins[SERVO_NUM] = {GPIO_Pin_0, GPIO_Pin_1, GPIO_Pin_4};void Multi_Servo_Init(void) {for(int i=0; i<SERVO_NUM; i++) {GPIO_Init(GPIOB, servo_pins[i]); // 初始化多个PWM输出}// 配置各通道比较寄存器
}

5.2 中央对齐模式应用

// 配置中央对齐模式
TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_CenterAligned1;
/* 
模式特点:
- 减少电机噪声
- 生成对称PWM波形
- 适合电机控制场景
*/

六、调试与优化

6.1 示波器测量要点

测量参数预期值调整方法
PWM周期20ms ±1%修改arr/psc参数
脉冲宽度0.5-2.5ms调整CCR寄存器值
上升沿时间<1μs检查GPIO速度设置

6.2 常见问题排查

现象可能原因解决方案
舵机无反应PWM极性设置错误检查TIM_OCPolarity配置
角度控制不准确脉冲计算错误校验角度转换公式
多通道干扰重映射配置冲突检查AFIO重映射设置

七、相关资源

[1] 洋桃电子B站课程-STM32入门100步
[2] STM32官方文档手册
[3] STM32F103固件函数库用户手册(中文)
[4] PWM驱动舵机程序
[5] 定时器PWM程序分析.pptx


💬 技术讨论(请在评论区留言~)

📌 下期预告:下一期将探讨定时器PWM程序分析2,欢迎持续关注!

点击查阅🔍往期【STM32专栏】文章

版权声明:本文采用[CC BY-NC-SA 4.0]协议,转载请注明来源
实测开发版:洋桃1号开发版(基于STM32F103C8T6)
更新日志

  • v1.0 初始版本(2025-03-25)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com