2025-11-08 05:40:32
STM32要发方波得先找定时器这个工具,就像搭积木先得有块砖头。先拿GPIO引脚当开关,再让定时器给这个开关按开关机按钮。定时器得先调好心跳速度,比如用预分频器把16MHz掰成1MHz,这就像把大钟表调慢。然后设自动重载值,比如设成1000,这样每过1ms就翻转一次高低电平,这样1秒就能翻1000次,变成1kHz的方波。得让定时器工作在PWM模式,这样高低电平时间比例就能调了,比如高电平500ms低电平500ms就是50%占空比。
为啥得这么整呢?因为定时器是个精准的节拍器,它每走一步就检查计数器是否到ARR值。比如STM32F4的TIM2模块,预分频值设为16MHz/16=1MHz,ARR设为1000就对应1ms周期。当计数器到ARR时翻转输出,这样高低电平各占一半就成对称方波。占空比公式是(ARR-CNT)/ARR,比如设ARR=1000,CNT=500,高电平就500ms。但要注意ARR不能设太小,比如设成1的话周期就1ms,可能让CPU忙不过来。还有PWM的占空比调得越高,高频部分能量越多,低频部分越少,这跟调音量旋钮一个道理。不过得留点余量,比如ARR设1000的话,实际能调的占空比是0-99.9%,不能100%因为计数器到ARR就重置了。
本题链接: