历史上的今天
今天是:2025年04月15日(星期二)
2021年04月15日 | STM32单片机按键电路设计
2021-04-15 来源:eefocus
以前GPIO上接的电路都是低电平触发的那种,新画了个板子有一个按键设计的是高电平触发,结果IO口设置成上拉输入后,怎么读都不正确,按键电路如图1。无奈只能去调试一下,发现当设置为上拉输入后,其ODR(GPIO输出数据寄存器)相应的也置为1,百思不得其解。

图1 按键电路
于是去看一下GPIO的结构图:

I/O引脚结构图
由图可以发现其实输出寄存器与输入寄存器之间在I/O引脚处是线与状态,在GPIO设置成上位输入时,其上拉电阻闭合,这时如果输出寄存器设置为0那么在IO口内部就会自己损耗电流,而这些电流的损耗是会增加功耗的。因此当GPIO设置成上拉输入时,相应的输出寄存器也设置为1.
将按键电路与I/O引脚结构图连起来看,就清晰多了,当GPIO设置为上位输入时,上拉电阻与按键的330欧、220K欧串联,这时IO口所读到的电平就是330欧与220K欧电阻分压的总合,由于这两个电阻阻值过大,因引读出的电压大于逻辑‘1’的阀值。OK问题找到了,于是将IO设置成下拉输入,问题就解决了。因此这里得出一个结论,IO口是上拉还是下拉要根据,IO口外部接的空闲电平有关,如按键不按下时是低电平,则应该设置为下拉输入。
在调试时还发现另一种方法可以让代码正常运行,就是当设置上拉输入时,将其输出值设置为0,这样电平就被直接拉低了,按键的接地电路基本就不起作用了,但这样做有一个坏处,前面已经说过了,这种情况会导致上拉电阻直接接地了,增加了不必要功耗,而且将3.3V电压直接加在了输出驱动器的N-MOS上,时间长了之后可能会造成芯片损坏!
上一篇:STM32 外部中断 易出错总结
史海拾趣
|
1、准备一张厚厚的,防水的,质量好的纸,至少要100克的,但表面不能太光滑,防止墨迹脱落。 2、在纸上用郑重的语气写上,给我的第N代子孙,我是你的祖先XXX,出生在XXXX年,我留下这张纸的时间是XXX年…… 3、按照以上的 ...… 查看全部问答> |
|
1.支持多种硬件平台 由于嵌入式设备硬件平台的多样性,CPU芯片的快速更新,嵌入式操作系统要求支持常用的嵌入式CPU,如X86, ARM, MIPS, POWERPC等,并具有良好的可移植性。另外还需要支持种类繁多的外部设备。Linux支持以上几乎所有的主流芯片, ...… 查看全部问答> |
|
魔方机器人,取名小螃蟹,这只小螃蟹可以用两个钳子解开魔方,特发上来和大家分享下 视频地址:http://v.youku.com/v_show/id_XMjU0MTE3Mzgw.html, 详情关注:http://hi.baidu.com/jialaolian629/blog(打个广告 ) 大家有兴趣可以跟帖交流,嘿 ...… 查看全部问答> |
|
2A太阳能,温差的能量收集, 凌特的芯片:LT3652和LTC3108. 2A太阳能,温差的能量收集, 凌特的芯片:LT3652和LTC3108. 社区各位好:目前在做的主要涉及凌特的两个芯片LT3652和LTC3108.1、LT3652用于太阳能, 2A ,最大功率跟踪,Energy Harvesting用途:大功率的太阳能能量收集,用在太阳能充 ...… 查看全部问答> |
|
补第十章的第三部分“10.5 内存保护单元(MPU)的固件库函数”样例 下面的示例设置了一组基本的保护区域:n 在闪存中,一个28 KB区域的只读代码执行n 在特权和用户模式下32 KB的RAM读写访问n 仅使用在特权模式下一个额外的8 KB RAMn 只能在特权模式下访问的1 MB外设空 ...… 查看全部问答> |




