最近要用到一键开关机电路,网上有很多,不过都比较复杂,且不适合我的应用,于是设计一款比较简单的一键开关机电路。 下边是简化版本,因为锂电池供电需要降压,使用了一款带有关断功能的DC-DC芯片,按键按下时EN引脚会通过二极管上拉到4.2-0.3V左右,此时降压芯片工作。 STM32上电后先通过I/O1输出高电平维持住EN引脚的电压,这时松开按键,EN引脚的电压为3.3V,降压芯片继续工作。 因为使用了二极管隔离,此时如果I/O2使用使用内部下拉电阻,I/O2的电压是0V。在STM32正常工作时再次按下按键,I/O2会被拉高可以通过STM32检测并处理按键事件。 比如当长按按键3秒后关机,在处理关机动作时不能将I/O1设置为低电平,因为按键还处于按下状态时会强制把I/O1拉高,STM32内部的MOS肯定干不过按键,容易烧坏芯片。 这时只需要将I/O1设置为输入状态,在按键松开后EN引脚会被下拉电阻拉到0V,降压芯片停止工作。 这里I/O1和I/O2需要使用5V容忍的I/O。
|