好的,我已经完整查看了该帖子的全部内容。下面为您总结并给出专业分析:
帖子内容摘要
标题: 当STC单片机,在正常运行情况下,供电电压跌到1.9V以下,芯片会是什么状态
楼主(11301*)问题:**
使用 STC8H1K17/STC8H1K08 系列,设置低压检测电压为 2.7V,将电压分为三段:
- 2.7V以上 — 正常运行
- 1.9V ~ 2.7V — 低压异常处理(中断或复位)
- 1.9V以下 — 单片机不工作
问题1: 电压从5V下降到1.9V~2.7V范围时,触发低压复位前,寄存器数据和端口输出状态是否还和正常运行时一样?
问题2: 电压下降到1.9V以下(如1.5V~1.6V),单片机不工作了,寄存器数据和端口输出状态会怎样?
各楼层回复要点
| 楼层 |
内容 |
| 回复1(网*)** |
既然设置了2.7V低压复位,电压降到2.7V就触发硬件复位,单片机清零,不会进中断,也不会在1.9V~2.7V之间运行用户代码 |
| 回复3(梁*)** |
1.9V以下芯片复位 |
| 回复4(楼主追问) |
1.9V以下芯片复位后,端口恢复为高阻态? |
| 回复5(梁*)** |
复位恢复上电启动状态,该高阻的还是会高阻 |
| 回复6(jw*)** |
低于复位电压时是初始态,大部分默认是高阻 |
| 回复7(angm*)** |
✅ 除P3.0/P3.1外,所有I/O口复位后恢复为高阻输入状态;⚠️ P3.0/P3.1复位后为弱上拉/准双向口模式,对外呈现高电平 |
我的专业分析(作为 STC FAE)
结合手册和论坛讨论,我来为您系统解答:
关于问题1:电压从5V下降到2.7V时
当您勾选了 "允许低压复位" 并设置检测电压为 2.7V 时:
- 电压从5V下降,一旦跌到 2.7V(阈值),片内低压检测硬件立即触发复位,单片机被清零
- 不会进入低压中断(因为您选的是"允许低压复位"而非"允许低压中断")
- 不存在"1.9V~2.7V之间还能运行用户代码"的情况——复位发生后芯片就停止执行用户程序了
- 寄存器数据被复位到默认值,端口恢复为复位状态
如果您希望电压下降时先执行紧急处理再复位,应选择 "允许低压中断"(不勾选"允许低压复位"),在低压中断服务程序中保存关键数据、设置安全状态,然后可软件触发复位。
关于问题2:电压下降到1.9V以下(如1.5V~1.6V)
此时已低于芯片最低工作电压(1.9V),芯片完全停止工作:
- 寄存器数据: 不可靠,可能随机丢失或保持部分数据,不能依赖
- I/O口状态: 芯片内部逻辑失控,端口状态不确定。但根据芯片设计,在电压跌落过程中如果已触发复位,则端口已恢复为复位状态:
- P3.0/P3.1: 弱上拉/准双向口,对外呈现高电平
- 其他I/O口: 高阻输入状态
总结建议
| 场景 |
行为 |
端口状态 |
| 5V → 降至2.7V(勾选低压复位) |
硬件复位,不执行用户代码 |
除P3.0/P3.1为弱上拉高电平外,其余为高阻输入 |
| 5V → 降至2.7V(勾选低压中断) |
进入中断,可执行紧急处理 |
用户程序可控制,中断退出后仍可维持 |
| 继续降至1.9V以下 |
芯片停止工作 |
同上(复位状态维持) |
建议: 如果您的应用需要电源跌落时做安全处理(如保存参数、关闭负载),请使用 "允许低压中断" 模式,在中断中执行保护操作后再软件复位。
🔍 搜索 "https://www.stcaimcu.com/thread-24942-1-1.html"
⏱️ 查找用时 3.3s | 总回答用时 15.8s