STM32学习17--定时器之舵机
舵机是一种根据输入PWM信号占空比来控制输出角度的装置。一、舵机基本参数舵机Servo Motor是一种根据输入PWM脉冲宽度调制信号占空比来控制输出轴角度的精密执行装置。它内部包含直流电机、减速齿轮组、位置反馈电位器和控制电路通过闭环控制实现精确的角度定位。1、以舵机SG90为例SG90是一款微型舵机广泛应用于机器人、航模、智能小车等场景。其核心电气参数如下工作电压4.8V ~ 6.0V典型5V3.3V无驱动力工作电流100mA ~ 250mA空载~堵转扭矩1.2kg·cm ~ 1.8kg·cm电压不同响应速度0.1s/60°4.8VPWM控制信号规范PWM周期固定20ms频率50Hz不能改变高电平脉宽范围0.5ms ~ 2.5ms对应输出角度0° ~ 180°典型对应关系0.5ms → 0°最左位置1.5ms → 90°中间位置2.5ms → 180°最右位置2、参数计算基于STM32F103C8T6系统时钟72MHz目标生成周期20ms、分辨率满足0.5ms~2.5ms可调的PWM信号。步骤分解确定计数频率系统时钟72MHz预分频器PSC设为7200-1则计数器时钟频率 72MHz / 7200 10kHz即每个计数周期0.1ms。确定自动重装载值ARRPWM周期 (ARR1) × 计数周期。周期20ms对应200个计数周期20ms ÷ 0.1ms 200故ARR 200-1 199。计算CCR值捕获/比较寄存器CCR值决定高电平脉宽与角度呈线性关系。0°0.5msCCR 0.5ms ÷ 0.1ms 590°1.5msCCR 1.5ms ÷ 0.1ms 15180°2.5msCCR 2.5ms ÷ 0.1ms 25通用公式CCR (Angle / 180.0) × (25 - 5) 5其中Angle为0~180°。3、接线示意图SG90舵机通常有三根线棕色线BrownGND接地红色线RedVCC电源5V橙色线Orange信号线PWM输入连接STM32开发板时信号线 → PA1TIM2通道2VCC → 5V电源注意电流需足够GND → 共地注意若驱动多个舵机建议使用外部独立电源供电避免开发板LDO过载。1、以舵机SG90为例PWM周期固定20ms频率50Hz高电平范围0.5~2.5ms对应0~180°0.5ms→0°1.5ms→90°中间位置2.5ms→180°2、参数计算系统时钟72MHz周期20ms。设PSC1 7200计数频率10kHz0.1ms计数一次ARR1 200CCR值线性关系CCR5→0.5ms0°CCR15→1.5ms90°CCR25→2.5ms180°3、接线二、代码部分练习以TIM2为例通道1→PA1实现0°→180→0°循环往复。最经典且最简单的做法在whiel()里放2个For循环一个负责正转0→180°另一个负责反转180→0。1、PWM初始化void PWM_Init(uint16_t ARR,uint16_t PSC) { TIM_TimeBaseInitTypeDef TIM_BaseInitStructure; GPIO_InitTypeDef GPIO_InitStructure; TIM_OCInitTypeDef OC_Config; //开启时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE); //初始化GPIO GPIO_InitStructure.GPIO_Mode GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Pin GPIO_Pin_1; GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; GPIO_Init(GPIOA,GPIO_InitStructure); //初始化时基单元 TIM_BaseInitStructure.TIM_ClockDivision TIM_CKD_DIV1; TIM_BaseInitStructure.TIM_CounterMode TIM_CounterMode_Up; TIM_BaseInitStructure.TIM_Period ARR; TIM_BaseInitStructure.TIM_Prescaler PSC; TIM_TimeBaseInit(TIM2,TIM_BaseInitStructure); //配置OC TIM_OCStructInit(OC_Config); OC_Config.TIM_OCMode TIM_OCMode_PWM1; OC_Config.TIM_OutputState TIM_OutputState_Enable; OC_Config.TIM_OCPolarity TIM_OCPolarity_High; OC_Config.TIM_Pulse 15; TIM_OC2Init(TIM2,OC_Config); TIM_OC1PreloadConfig(TIM2,TIM_OCPreload_Enable); TIM_ARRPreloadConfig(TIM2,ENABLE); TIM_Cmd(TIM2,ENABLE); }2、舵机Servo初始化及设置角度函数#include stm32f10x.h #include PWM.h void Servo_Init() { PWM_Init(200,7200-1); } void SetMyAngle(uint16_t Angle) { uint16_t Val; if(Angle180) { Angle 180; } Val (uint16_t)((25.0-5.0)/180.0)*Angle5); TIM_SetCompare2(TIM2,Val); }3、舵机Servo头文件#ifndef __SERVO_H #define __SERVO_H void Servo_Init(); void SetMyAngle(uint16_t Angle); #endif4、main函数#include stm32f10x.h // Device header #include Delay.h #include OLED.h #include Servo.h uint16_t ang; int main() { OLED_Init(); Servo_Init(); SetMyAngle(0);//先归零 Delay_ms(1000);//等待舵机物理归位 OLED_ShowString(1,1,Angle:); while(1) { //0→180 for(ang 0;ang 180;ang) { SetMyAngle(ang); Delay_ms(10); //延时决定转动速度 OLED_ShowNum(1,7,ang,3); } Delay_ms(1000); //到头停止1s //180→0 for(ang 180;ang 0;ang--) { SetMyAngle(ang); Delay_ms(10); OLED_ShowNum(1,7,ang,3); } Delay_ms(1000); //到头停止1s } }注意1平滑度控制Delay_ms(10)这个参数决定了舵机转动的丝滑程度。如果设为Delay_ms(1)舵机会转动非常快会因为惯性产生抖动。如果设为10ms转动会比较丝滑。这个过程中耗时约1.8s。可多次试验几次调整参数。2数据类型angle使用了uint16_t无符号16位整数在反向循环中条件写的是angle0而不是angle0因为无符号数减到0后再减1会发送下溢变成65535一直大于条件0导致死循环。本文完

相关新闻

DeepSeek大模型API实战:从技术原理到开发应用全解析

DeepSeek大模型API实战:从技术原理到开发应用全解析

最近AI圈最热的话题是什么?不是OpenAI又发布了什么新模型,而是国内大模型公司DeepSeek的最新估值——3250亿至3500亿元人民币!这个数字意味着什么?简单来说,DeepSeek已经跻身全球最有价值的AI公司行列。但作为开发者&a…

2026/7/20 15:57:51阅读更多 →
AI音乐创作平台哪个更完整?7款工具从起歌到成品的真实体验

AI音乐创作平台哪个更完整?7款工具从起歌到成品的真实体验

我用 AI 写歌时,最常见的卡点并不是完全没想法。很多时候,脑子里已经有一句词,甚至连副歌情绪都有了,却很难把它扩成一首完整的歌。试过几款平台后会发现,生成一段旋律并不难,真正拉开差距的是中文歌词顺不…

2026/7/20 15:57:51阅读更多 →
Hermes Agent安全架构与多Agent系统稳定性实践

Hermes Agent安全架构与多Agent系统稳定性实践

1. Hermes Agent 安全架构深度解析在当今多Agent协作系统中,稳定性与安全性已成为核心诉求。Hermes作为新一代智能体框架,其独特的6层防御机制让多Agent系统能够持续稳定运行长达一周而不掉线。这套防御体系从用户授权到容器隔离,构建了完整的…

2026/7/20 15:57:51阅读更多 →
卫星图像分析技术在导弹防御系统识别中的应用

卫星图像分析技术在导弹防御系统识别中的应用

1. 项目概述:卫星图像分析在军事防御领域的应用 最近在整理开源卫星图像数据时,发现一个很有意思的现象:通过商业卫星图像可以清晰识别韩国和日本部署的导弹防御系统结构。这让我意识到,现代卫星遥感技术已经发展到可以支持民间研…

2026/7/21 8:43:15阅读更多 →
Claude Code 发布 Shopify 博客太复杂?为什么越来越多人开始使用 Seonib Skill

Claude Code 发布 Shopify 博客太复杂?为什么越来越多人开始使用 Seonib Skill

近几个月,越来越多 Shopify 开发者开始使用 Claude Code。 有人用它开发主题。有人用它编写 Shopify App。也有人开始让 Claude Code 直接生成 SEO 博客,并尝试发布到 Shopify。 如果你最近搜索过相关教程,应该会发现网上已经有不少文章&…

2026/7/21 8:43:15阅读更多 →
Qt模型/视图架构详解:从MVC原理到自定义Model实战

Qt模型/视图架构详解:从MVC原理到自定义Model实战

在实际 Qt 开发面试中,模型/视图(Model/View)架构是一个高频且深入的话题。很多开发者虽然用过 QTableView 或 QListView ,但当面试官问及它与传统 MVC 的区别,或者要求手写一个自定义 Model 时,却常常…

2026/7/21 8:43:15阅读更多 →
Zotero+ChatGPT+Obsidian三端联动实战:从文献抓取到自动标注的7分钟闭环 workflow

Zotero+ChatGPT+Obsidian三端联动实战:从文献抓取到自动标注的7分钟闭环 workflow

更多请点击: https://codechina.net 第一章:ZoteroChatGPTObsidian三端联动实战:从文献抓取到自动标注的7分钟闭环 workflow 核心目标与技术栈定位 该 workflow 旨在打通学术研究中最耗时的三个环节:文献发现、语义理解与知识沉…

2026/7/21 8:43:15阅读更多 →
应届生职业证书选择指南:高价值认证与备考策略

应届生职业证书选择指南:高价值认证与备考策略

1. 证书选择的底层逻辑与价值评估大学最后一年总是充满焦虑和迷茫,看着身边同学纷纷考取各种资格证书,不少应届生会陷入"考证恐慌"。但证书绝非越多越好,关键在于精准匹配个人职业规划。我作为经历过这个阶段的过来人,想…

2026/7/21 8:43:15阅读更多 →
RTX5060与RTX5070显卡性能对比与选购指南

RTX5060与RTX5070显卡性能对比与选购指南

1. RTX5060与RTX5070显卡核心参数对比 1.1 架构与制程工艺解析 RTX5060和RTX5070均采用NVIDIA最新的Blackwell架构,但具体规格存在明显差异。RTX5060搭载的是GB205核心,而RTX5070则采用规模更大的GB204核心。从制程工艺来看,两者都使用台积电…

2026/7/21 8:41:15阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/21 0:51:49阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 0:51:49阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/21 0:51:49阅读更多 →
Windows+macOS 通用 OpenClaw 部署流程,内置依赖一键启动智能桌面助手

Windows+macOS 通用 OpenClaw 部署流程,内置依赖一键启动智能桌面助手

📌教程适配:OpenClaw v2.7.9 | 兼容 Windows10/11、macOS 双系统 📖前言 当下各类本地 AI 工具层出不穷,多数产品仅能完成文字问答交互,很难直接操控电脑执行实际操作。OpenClaw,业内常称小龙虾 AI&#…

2026/7/21 0:01:46阅读更多 →
Codex 接入后 Bug 反增?复盘从个人演示到团队协作的“流程陷阱”

Codex 接入后 Bug 反增?复盘从个人演示到团队协作的“流程陷阱”

聊《一次Codex项目复盘,问题最后出在流程而不是模型》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要先把这篇文章的目标说清楚:看完之后,你应该能判断这件事值不值得做&…

2026/7/21 0:01:46阅读更多 →
手把手搓一个五子棋游戏,零代码也能当“游戏开发者”

手把手搓一个五子棋游戏,零代码也能当“游戏开发者”

大家好,还是我。前几期带大家做了心情日记本和可视化大屏,后台有朋友留言:“能不能教点好玩的?我想做游戏,但一行代码都不会。”行,这期就安排。今天的目标:从零做一个五子棋游戏。 带AI对战、三…

2026/7/21 0:03:46阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/20 22:51:39阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/20 18:51:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/20 18:51:18阅读更多 →