这块内容解决什么实际工程问题?
在嵌入式开发中,单纯靠 `delay()` 函数阻塞延时,会让 CPU 陷入“空转”,导致主循环无法处理其他任务。定时器和 PWM 输出正是为了解决这一矛盾而存在的核心外设。
定时器部分主要解决精准时基和事件捕获问题。无论是实现毫秒级、微秒级的精确定时,还是测量外部信号的脉宽、频率,抑或是产生周期性的中断来驱动任务调度,定时器都是底层基石。它让单片机从“忙等”变成“事件驱动”,是编写非阻塞代码的前提。
PWM(脉冲宽度调制)部分则主要解决模拟量控制和功率调节问题。通过调整占空比,你可以用数字 GPIO 口控制电机的转速、LED 的亮度,或者生成音频波形、控制舵机角度。它是连接数字世界与模拟物理世界的桥梁,也是进阶到电机控制、电源管理的必经之路。
适合什么基础的学习者?建议先看哪几块?
本课程定位为体系课的第 5 季第 3 部分,通常意味着学习者已经具备了 C 语言基础,并且对单片机的 GPIO 基本操作(如点灯、按键输入)有所了解。如果你连寄存器或库函数的基本读写还不熟悉,建议先回头巩固基础,否则直接上手寄存器配置可能会感到晦涩。
学习建议遵循“先理解原理,再动手配置”的路径:
- 优先级最高:定时器基本原理。 首先要搞懂自动重装载寄存器(ARR)、预分频器(PSC)和计数模式的关系。不理解这三个参数的配合,后续所有配置都是瞎猜。
- 其次:PWM 波形产生机制。 重点理解计数器如何与比较寄存器(CCR)进行比较,从而决定高电平和低电平的时间比例。这是控制占空比的底层逻辑。
- 最后:中断服务程序与具体应用。 当定时器触发中断时,CPU 该如何响应?如何将 PWM 应用于舵机或电机驱动电路?这部分需要结合具体的硬件电路图来理解。
学完能独立做什么?资料包如何配合练习?
完成本部分学习后,你将能够独立实现以下功能:
- 抛弃 `delay` 函数,利用定时器中断构建多任务调度框架,使主循环能同时处理按键扫描、通信接收和状态显示。
- 精确控制伺服电机的转动角度,不再依赖肉眼观察或示波器调试。
- 实现软 PWM 调光或硬件 PWM 电机调速,理解死区时间对 H 桥驱动的重要性。
- 使用输入捕获功能测量未知信号的频率和占空比,这是电子工程师的必备技能。
关于资料包的配合使用:不要只看不练。课程配套的代码示例通常提供了标准的配置模板。建议你首先尝试修改分频系数和比较值,观察波形变化;然后挑战“无中生有”,不看代码默写一遍定时器初始化流程;最后尝试改造代码,例如将一个定时器的中断改为另一个定时器的触发源,深入理解定时器之间的联动关系。只有亲手改过参数、看过波形,这些概念才算真正属于你。
课程目录
整理中,敬请期待。






