概述
在做最近的项目时,我发现一个这样的问题:对STM32中的IO进行配置(以对B系列下的PB10、PB13配置成输出模式为例),即使在配置参数一样的情况下,这两个IO输出能力还是有很大的差别。
情况一:如图焊接电路,两个IO口配置的是同样推挽模式,编写程序使得LED灯进行闪烁,我当时碰到的情况就是一个LED灯能够闪烁,另一个LED灯死活不闪。后来换成三极管驱动LED灯的方式,才解决这样的问题。由此可以看出IO口的驱动能力很弱,而且不稳定。
情况二:如图焊接电路,两个DS18B20信号线对应的IO口配置成相同的输入输出模式,编写程序使得STM32读取DS18B20的温度值,并且分别反馈到电脑的上位机软件上。有一个DS18B20的温度能够正确并且及时的反馈到上位机软件上,另一个DS18B20就比较牛逼了,STM32能够检查到IO口上连接了这个DS18B20,并且能够读出一个温度值。但是读出那个温度值之后,不管这个DS18B20外界温度如何变化,上位机软件上就是不再更新这个DS18B20的温度了。更悲催的是,程序运行到一段时间后,STM32就开始冒烟发烫。我用万用表测量STM32芯片的VCC和GND,发现两者导通了。显然,STM32被击穿。
我对于这个问题的现象,一开始以为是我的电源正负极断路了,当我检查时,发现电源输出正常。众所周知,STM32正常的擦写次数是很多的,一定是因为什么原因导致STM32被击穿。
后来,我觉得我的电路没有什么问题,我就直接换了一个STM32模块,发现问题依旧存在,STM32被烧坏。这就让我很郁闷了。
再后来,因为我觉得DS18B20的温度读取不正常,可能和DS18B20的信号线有关系。所以我抱着试试的心态,将其上拉电阻去掉,再上电观察上位机的数据时,发现上位机能够正确显示DS18B20的温度值。
最后可以确定可能是上拉电阻影响了STM32的IO口正常工作,并且持续上拉的话,还会导致STM32被击穿。(我的上拉电阻接的电压就5V,也不知道为啥连5V电压STM32也受不了)
对于以上两个问题我进行以下总结,STM32的IO口相互之间还是有一定差别的(即使是在同样的A或者B等系列之中的IO口)。STM32之前一直是我眼中很稳定的芯片,现在发现也不过如此。正因为碰到这样的问题,更加坚定了我以后走嵌入式的道路。
最后
以上就是可靠蚂蚁为你收集整理的STM32的IO口有幺蛾子(bug)的全部内容,希望文章能够帮你解决STM32的IO口有幺蛾子(bug)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复