多语言展示
当前在线:1920今日阅读:167今日分享:16

STM32F051的PWM不能输出的一些异常总结

STM32的PWM功能过于复杂,以至于很容易忽略一些细节,导致PWM工作异常,而这些异常大部分其实都是些乌龙事件,经过一段时间的实践,在这里将一些常见的“乌龙事件”汇总。
工具/原料

Keil

端口连接错误

这是最容易也是最“乌龙”的事件,有时候软件完全没问题,但是可能因为用脑过度,导致犯迷糊,把端口接错了,从而无法得到正确的PWM波形。解决办法:1)喝点水,出去散散步,然脑袋好好清醒下。2)将端口设置为普通输出模式,看看有没有波形输出。3)将测试的设备接接电源正负极,看看有没有改变,确定设备是好的再测。

未初始化相关的时钟

时钟是STM32最让人头疼的东西,默认这些外设的时钟都是关闭的,有时候这种问题够你折腾半天的。最好的办法就是养成习惯,对于任意一个外部设备的应用要条件反射式地想到“时钟打开了没有”!

端口配置错误

包括:完全没有进行端口配置,未开启端口时钟,未初始化为输出,复用引脚配置错误等等,这些问题在用脑过度时是很难排查的,因为你压根就想不到回事这么低级的问题。解决办法依然只能是养成端口初始化的习惯,形成条件反射。

未使能定时器

PWM是依托在定时器上的,如果定时器都没有工作,那么PWM输出自然也是停止的。所以在使用PWM的时候也应该形成对定时器使能的条件反射。

未使能PWM通道

包括PWM结构体的初始化、通断选择、通道输出使能等。

重复初始化

如果习惯在程序运行过程中配置PWM,那么很可能出现重复初始化的问题,比如你每次配置PWM都会清零计数器,那么这很可能导致PWM一直在初始阶段,导致没有PWM输出或者输出波形异常。

PWM脉宽为0

我想这是最大的“乌龙”了,所有的配置都是好的,就因为脉宽设置为0导致PWM为固定电平,真是冤死人不偿命。

注意事项
1

1、以上只是个人的一些“乌龙”汇总,具体应用情况复杂,需要具体情况具体对待。

2

2、养成一个好的编程习惯,避免过度用脑是避免这类“乌龙事件”的有效方法。

推荐信息