PWM 使用的时候, 有几个问题没弄懂, 特此请教一下, 以前在 STM32 下使用过 PWM, 细节比较清晰, 查找 W801 手册没查到相关介绍.
1, PWM 计数器: 该计数器是多少位的计数器? 该计数器什么时候清零? 能不能手动软件清零? 还是只能溢出后自动清零? 比如启动 PWM 输出, 然后停止 PWM 输出, 这时候的计数器是保持还是清零? 再次启动 PWM 输出的时候, 计数器是从 0 开始, 还是延续原来的计数值? 这涉及到第一个 PWM 波形, 有时候对这要求比较严.
2, PWM 输出电平: 从手册上看可以达到 100%, 不能达到 0. 也就是可以通过调整占空比输出固定高电平, 不能输出固定低电平. 如果有时候需要输出固定低电平 (固定高电平和固定低电平都需要) 怎么处理? PWM 停止后输出电平是高还是低或者是随机? 我这有个地方对停止后的电平有固定要求.
3, PWM 捕获: 需要计算捕获波形的占空比, 被测 PWM 波频率范围比较宽. 因为不知道计数器什么时候清零, 那两个捕获值不知道如何计算, 而且有可能在捕获之前经历过溢出.
PWM 的配置的 IO 是浮空, 也就是说 PWM 停止后是处于浮空状态? 那只要在对应 IO 口外接下拉电阻, 是不是相当于停止 PWM 就是低电平? 那就不需要注释以上语句了, duty=0 的时候, 停止 PWM, 输出低, duty=255 的时候输出高电平.
不注释也可以 但是你重新启动要 start 不能直接设置 duty
@Mrzhao 嗯, 是的, 一旦设为占空比零, 后面就要重新启动, 幸亏提醒, 不然又是一个坑. 另外根据测试, 好像捕获时计数器每次碰到上升沿或下降沿都会自动清零, 这样捕获到的数据就是对应电平的时间.