PWM实际上就是电平信号不断反转形成的 它通过一个周期内高电平的持续时间来控制LED,电机等等器件的亮度或者速度
其实PWM与定时器的时基单元有以下关系 定时器的更新中断周期一般是计数器CNT自增到自动重装寄存器ARR的一段时间 而PWM的频率和更新中断频率一致 那么不难得到
PWM的频率是时钟频率/PSC+1预分频器/ARR+1自动重装寄存器
在定时器的PWM1模式下 CCR为捕获比较器 由他来判断CNT和ARR的大小 CNT<ARR为高电平
因此可以通过修改CCR来修改占空比
最后分辨率是占空比可以修改的最小步距 由于占空比为CCR且比较的是ARR和CNT没有小数 所以分辨率靠ARR来决定 ARR越大 越精确
PWM配置函数如下:先开启时钟 然后配置GPIO输入为复用推挽输入 接着配置时基单元
ARR的值一般给100 分辨率为1%
接着配置输出比较单元 选择PWM模式1 高电平触发 使能输出口 CCR给0 后期可以自己调配
输入捕获实际上是检测上升沿之间计数器计数了多少 然后使用预分频后的频率除以计数值 所以最小测出的频率为基准频率除以65535 输入捕获部分先开启时钟配置GPIO口 选择内部时钟 配置时基单元 这里的ARR要给最大 避免测试频率较小的时候计数器溢出 预分频器的值是提供基准频率 用来计算测到的频率 即基准频率除以一个周期内所计数到的CNT的值