MC32F7361关闭喇叭(蜂鸣器)后概率性IO会拉高的问题分析

文章讲述了在项目中使用PWM驱动喇叭报警时遇到的问题,即关闭定时器后仍可能造成IO高电平烧坏元件。作者发现必须同时关闭PWM的enable才能彻底解决问题,强调了Timer与PWM之间的串行关系以及在MCU开发中的注意事项。
摘要由CSDN通过智能技术生成

        在项目中使用了PWM来驱动喇叭来报警,但关闭警报后有概率性IO会在高电平状态,致命烧坏电感或发烫,反复出现,并经过多次查找,最终发现单独关闭定时器enable并不代表PWM就关闭了,还需要配套关闭PWM的enable。具体过程记录下来,给大家在做MCU开发的朋友们做个借签。

        先说一下硬件和代码的设计。

        原理图如下:             

        使用PWM0驱动Q1, L1, 及蜂鸣器J2。

        代码如下:

         分析,每次喇叭响完后,代码都是通过T0EN=0把定时器关闭,反复测试发现有一定概率IO是停在高电平状态,示波器抓了图如下,

        后续加了P16D=0把IO强制拉低, 客户又反复几次退回,问题依然存在,此时有些迷茫,再经过FAE的帮助,并查看了规格书如下,PWM也对应有个PWMxEC的开关,可以控制PWM的工作与否,如下:

        与是,在代码上加入PWM0EC=0后,问题真正的才算解决了,如下:

        

        总结,Timer与PWM是串行关系,Timer关闭只能关闭计算的变化,PWM单元关闭才能确保最终IO输出电平的确定性。 特此分享给朋友们在用到PWM功能时,留意些细节,防止走弯路,希望能帮到部分同行。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值