定时器与 PWM 学习笔记
文章目录STM32 定时器与 PWM 学习笔记一、定时器分类STM32F103C8T6 定时器资源系统时钟树要点三个重要概念定时时间计算公式二、定时器中断配置流程步骤代码模板三、PWM脉冲宽度调制工作原理PWM 模式PWM 配置步骤PWM 代码模板实时修改占空比通道与引脚对应关系F103C8T6 常用四、典型应用场景1. LED 呼吸灯2. 舵机控制3. 直流电机调速五、重要注意事项六、小结STM32 定时器与 PWM 学习笔记基于 B站 江科大自化协 STM32 教程整理一、定时器分类STM32F103C8T6 定时器资源类型数量位数功能高级定时器 (TIM1)116位PWM 互补输出、死区控制、刹车功能通用定时器 (TIM2/3/4)316位定时、PWM、输入捕获、输出比较、编码器基本定时器 (TIM6/7)216位仅定时功能无外部 I/O系统时钟树要点系统时钟 SYSCLK 72MHz外部 8MHz 晶振 → PLL 倍频APB2 总线72MHzTIM1 挂载在 APB2APB1 总线36MHz但挂载在 APB1 上的定时器TIM2/3/4/6/7时钟 36MHz × 2 72MHz预分频器倍频三个重要概念概念缩写作用预分频器PSC对时钟分频决定计数频率自动重装载值ARR决定计数周期计数器CNT当前计数值定时时间计算公式T ( P S C 1 ) × ( A R R 1 ) T I M CLK T \frac{(PSC 1) \times (ARR 1)}{TIM_{\text{CLK}}}TTIMCLK​(PSC1)×(ARR1)​例如TIM_CLK 72MHzPSC 7199ARR 9999 → T 1s二、定时器中断配置流程步骤开启定时器时钟RCC_APB1PeriphClockCmd或RCC_APB2PeriphClockCmd配置时基单元TIM_TimeBaseInit使能更新中断TIM_ITConfig配置 NVICNVIC_PriorityGroupConfigNVIC_Init使能定时器TIM_Cmd代码模板voidTimer_Init(void){RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_TimeBaseStructure.TIM_Prescaler7199;// PSCTIM_TimeBaseStructure.TIM_Period9999;// ARRTIM_TimeBaseStructure.TIM_CounterModeTIM_CounterMode_Up;TIM_TimeBaseStructure.TIM_ClockDivisionTIM_CKD_DIV1;TIM_TimeBaseStructure.TIM_RepetitionCounter0;TIM_TimeBaseInit(TIM2,TIM_TimeBaseStructure);TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);NVIC_InitTypeDef NVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannelTIM2_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority0;NVIC_InitStructure.NVIC_IRQChannelSubPriority0;NVIC_InitStructure.NVIC_IRQChannelCmdENABLE;NVIC_Init(NVIC_InitStructure);TIM_Cmd(TIM2,ENABLE);}voidTIM2_IRQHandler(void){if(TIM_GetITStatus(TIM2,TIM_IT_Update)SET){TIM_ClearITPendingBit(TIM2,TIM_IT_Update);// 在这里写定时触发的操作}}三、PWM脉冲宽度调制工作原理通过改变占空比Duty Cycle来控制模拟量输出频率由 ARR 决定f P W M T I M C L K ( P S C 1 ) × ( A R R 1 ) f_{PWM} \frac{TIM_{CLK}}{(PSC 1) \times (ARR 1)}fPWM​(PSC1)×(ARR1)TIMCLK​​占空比由 CCR捕获/比较寄存器决定D u t y C C R A R R 1 Duty \frac{CCR}{ARR 1}DutyARR1CCR​分辨率由 ARR 的位数决定如 ARR 999分辨率为 0.1%PWM 模式模式行为极性PWM 模式 1CNT CCR 时为有效电平向上计数PWM 模式 2CNT CCR 时为有效电平向上计数PWM 配置步骤开启 GPIO 时钟和复用功能RCC_APB2PeriphClockCmd AFIO配置 GPIO 为复用推挽输出GPIO_Init设置GPIO_Mode_AF_PP开启定时器时钟配置时基单元TIM_TimeBaseInit配置输出比较单元TIM_OCInit使能定时器TIM_CmdPWM 代码模板voidPWM_Init(void){// 1. GPIO 时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);// 2. GPIO 配置以 PA0 → TIM2_CH1 为例GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_PinGPIO_Pin_0;GPIO_InitStructure.GPIO_ModeGPIO_Mode_AF_PP;// 复用推挽输出GPIO_InitStructure.GPIO_SpeedGPIO_Speed_50MHz;GPIO_Init(GPIOA,GPIO_InitStructure);// 3. 定时器时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);// 4. 时基单元TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_TimeBaseStructure.TIM_Prescaler71;// 72MHz / 72 1MHzTIM_TimeBaseStructure.TIM_Period999;// 1kHz PWMTIM_TimeBaseStructure.TIM_CounterModeTIM_CounterMode_Up;TIM_TimeBaseStructure.TIM_ClockDivisionTIM_CKD_DIV1;TIM_TimeBaseInit(TIM2,TIM_TimeBaseStructure);// 5. 输出比较配置TIM_OCInitTypeDef TIM_OCInitStructure;TIM_OCInitStructure.TIM_OCModeTIM_OCMode_PWM1;TIM_OCInitStructure.TIM_OCPolarityTIM_OCPolarity_High;TIM_OCInitStructure.TIM_OutputStateTIM_OutputState_Enable;TIM_OCInitStructure.TIM_Pulse0;// 初始占空比 0%TIM_OC1Init(TIM2,TIM_OCInitStructure);// 6. 使能TIM_Cmd(TIM2,ENABLE);}实时修改占空比voidPWM_SetCompare1(uint16_tCompare){// 注意库函数 TIM_SetCompare1 没有检查参数上限// 如果传入值 ARR会一直输出高电平100% 占空比TIM_SetCompare1(TIM2,Compare);}通道与引脚对应关系F103C8T6 常用定时器通道 1通道 2通道 3通道 4TIM1PA8PA9PA10PA11TIM2PA0PA1PA2PA3TIM3PA6PA7PB0PB1TIM4PB6PB7PB8PB9四、典型应用场景1. LED 呼吸灯// 在主循环中渐变改变 CCRuint8_tdir0;uint16_tpwm_val0;while(1){PWM_SetCompare1(pwm_val);if(dir0)pwm_val;elsepwm_val--;if(pwm_val999)dir1;if(pwm_val0)dir0;Delay_ms(1);// 控制呼吸速度}2. 舵机控制脉宽角度0.5ms0°1.0ms45°1.5ms90°2.0ms135°2.5ms180°设置 PWM 频率 50Hz周期 20msARR 19999PSC 71// SG90 舵机常用配置50Hz// ARR 20000-1, PSC 72-1// 0°: CCR 500// 90°: CCR 1500// 180°: CCR 25003. 直流电机调速使用 L298N 等驱动模块通过 PWM 占空比控制电机转速// 0~100% 占空比对应 0~ARRPWM_SetCompare1((uint16_t)(speed/100.0*ARR));五、重要注意事项TIM_SetCompare 参数范围库函数不检查传入值是否 ≤ ARR超出会导致持续高电平而非 100% 占空比重映射部分引脚存在默认复用功能冲突时需要通过 AFIO 重映射到备用引脚如GPIO_PinRemapConfig高级定时器 TIM1 需要额外使能TIM_CtrlPWMOutputs(TIM1, ENABLE)才能使 PWM 输出PSC 和 ARR 是 16 位寄存器最大值为 65535影子寄存器PSC 和 ARR 有影子寄存器更新事件发生时才会真正生效可设置TIM_ARRPreloadConfig控制更新时机时钟分割 (CKD)用于数字滤波器不是定时器时钟的分频配置死区时才起作用六、小结要实现配置要点定时中断时基单元 NVICPWM 输出时基单元 OC 通道 AF_PP 引脚占空比调节TIM_SetCompareX(TIMx, val)输入捕获测量外部信号频率/脉宽编码器模式电机速度/位置采集核心记忆口诀时钟-引脚-时基-通道 四步走PSC 决定单位时间ARR 决定周期CCR 决定占空比。整理时间2026-07-27

相关新闻

【建议收藏】华为USG6630E防火墙补丁安装实施方案(标志模板)

【建议收藏】华为USG6630E防火墙补丁安装实施方案(标志模板)

一、项目背景 华为防火墙USG6630E当前版本为V600R007C20SPC600,结合厂家巡检建议,需升级防火墙,在不中断业务的前提下,选择在业务空闲时期更新补丁,加载当前版本的最新补丁:V600R007SPH451。 二、影响范围 本次补丁安装涉及华为防火墙 USG6630E ,整体作业时长预计30分钟…

2026/8/5 23:50:02 阅读更多 →
从零开始:AP跨网段注册(三层)及Option 43配置实战

从零开始:AP跨网段注册(三层)及Option 43配置实战

一、DHCP Option43介绍 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)采用客户端/服务器模式,由服务器为网络设备动态地分配IP地址。DHCP的报文格式如图1-1所示,DHCP选项指的是DHCP报文中的options字段…

2026/8/5 23:50:02 阅读更多 →
MetaGPT | 第十四章:工具系统:Editor、Browser、Terminal 与 Tool Registry

MetaGPT | 第十四章:工具系统:Editor、Browser、Terminal 与 Tool Registry

预计阅读时间:55 分钟 难度等级:高级 本章导读 前面几章我们已经看到,MetaGPT 既有传统的固定 SOP,也有更动态的 RoleZero 智能体。 固定 SOP 更像预设流水线: WritePRD -> WriteDesign -> WriteTasks -> WriteCodeRoleZero 则更像一个能“看工具说明、生成命…

2026/8/5 23:50:02 阅读更多 →

最新新闻

ChatGPT对话数据导出实战:浏览器脚本实现本地化高效备份

ChatGPT对话数据导出实战:浏览器脚本实现本地化高效备份

1. 项目概述:为什么我们需要导出ChatGPT对话数据?作为一名深度依赖ChatGPT进行内容创作、代码调试和知识管理的用户,我发现自己越来越离不开这个强大的对话工具。但随之而来的是一个很实际的问题:那些充满灵感的头脑风暴、精心调试…

2026/8/6 0:37:19 阅读更多 →
小米/安卓手机自带应用能删 90%?手把手教你免 Root ADB 卸载系统 App

小米/安卓手机自带应用能删 90%?手把手教你免 Root ADB 卸载系统 App

不刷机、不 root、不动 /system 分区,一条 pm uninstall --user 0 就能把厂商预装、用不上的系统 App 从当前用户里"请出去"——干净、可逆、随时能装回。适用场景:车机 / 手机 / 平板上那些删不掉又占资源的预装应用(钱包、商城、…

2026/8/6 0:37:19 阅读更多 →
OpenCV C++基于CNN模型的图像分类

OpenCV C++基于CNN模型的图像分类

这个程序使用OpenCV加载一个Caffe模型进行图像分类。输入图像左边是一只小猫咪,右边是个航天飞机:程序运行后输入如下:id为285的是埃及猫:id为812的是航天飞机:代码:int main() {Mat img imread("cat…

2026/8/6 0:37:19 阅读更多 →
开源目标检测数据集深度汇总|全网独家整理多尺度样本适配方案、通用航拍遥感工业全覆盖、助力YOLO小目标检测与工业缺陷高精度落地

开源目标检测数据集深度汇总|全网独家整理多尺度样本适配方案、通用航拍遥感工业全覆盖、助力YOLO小目标检测与工业缺陷高精度落地

目录 一、研究前言:目标检测数据集选型核心痛点与优化价值 二、目标检测数据集分类逻辑与核心评价维度 三、六大类开源目标检测数据集全维度详解 3.1 通用基准类数据集(学术评测、模型预训练、基线对比首选) 3.1.1 Pascal VOC2007+2012 3.1.2 MS COCO 2017 3.1.3 Ope…

2026/8/6 0:37:19 阅读更多 →
追求源于热爱创业首秀:万志强发布 PANDAER 新品及DreamGoGo 众筹平台

追求源于热爱创业首秀:万志强发布 PANDAER 新品及DreamGoGo 众筹平台

追求源于热爱科技公司(DreamGoGo,简称"热爱科技")今日正式举办创业发布会。这家由魅族前 CMO 万志强创办,聚合原魅族产品、研发、Design、营销体系精英团队及 PANDAER 创始团队原班人马的新公司,首次对外披露…

2026/8/6 0:36:19 阅读更多 →
面试官问:“你的 Agent 平均每轮调几个工具?“

面试官问:“你的 Agent 平均每轮调几个工具?“

面试官问:“你的 Agent 平均每轮调几个工具?” 简历:“3 年后端开发,主导公司 AI Agent 平台建设,负责多工具编排与端到端延迟优化。” 看到简历上延迟优化这几个字,我问了个当场就能验证的问题&#xff1a…

2026/8/6 0:36:19 阅读更多 →

日新闻

深入解析LimboAI C++内核:架构设计与性能优化实战

深入解析LimboAI C++内核:架构设计与性能优化实战

1. 项目概述:为什么我们需要深入LimboAI的C内核?如果你是一名使用Godot引擎的游戏开发者,尤其是对AI行为逻辑有较高要求的项目,那么LimboAI这个名字你大概率不会陌生。它作为Godot 4生态中一个备受瞩目的行为树与状态机插件&#…

2026/8/6 0:00:06 阅读更多 →
Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

1. 项目概述与核心思路大家好,我是老张,一个在游戏开发一线摸爬滚打了十多年的老码农。今天咱们接着聊《空洞骑士》风格2D动作游戏的Demo制作。上一期我们搭好了基础框架,处理了角色移动和碰撞,这一期,我们要让游戏世界…

2026/8/6 0:00:06 阅读更多 →
被动防火门市场前景发展趋势

被动防火门市场前景发展趋势

被动防火门依靠材质结构、密闭构造阻隔烟火蔓延,无需电控启动,是建筑被动消防系统核心构件,行业依托新规管控、城市更新、工业安全升级迎来稳定扩容,整体朝着合规化、专项化、低碳化、智能化方向发展。现阶段 GB12955‑2024 新版国…

2026/8/6 0:00:06 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/5 21:00:14 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →