定时器与 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/11/1 7:21:33 阅读更多 →
从零开始:AP跨网段注册(三层)及Option 43配置实战

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

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

2026/11/1 20:23:20 阅读更多 →
MetaGPT | 第十四章:工具系统:Editor、Browser、Terminal 与 Tool Registry

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

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

2026/11/1 20:23:27 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/3 1:09:25 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/3 10:57:27 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/3 11:35:49 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/3 2:27:21 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/3 10:47:27 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/3 10:57:33 阅读更多 →

日新闻

周新闻

月新闻