用按键带唤醒功能的参考代码修改了之后使用有点问题,请教
STC8H4K64TL参考这个帖子写了程序, 正常工作是没有问题,但是休眠后我用触摸去唤醒,好像唤不醒呢 请哪位工程师帮忙看看呢,谢谢触摸按键唤醒,1uA/1个键/1秒唤醒,STC触摸MCU, 唤醒【主时钟停振/省电模式】
https://www.stcaimcu.com/thread-5167-1-1.html
(出处: 国芯技术交流网站)
针对您在STC8H4K64TL系列单片机中遇到的触摸唤醒异常问题,结合官方技术文档及工程实践经验,现提供以下系统性排查方案:
一、核心配置项核查
1.1 低功耗模式选择
STC8H4K64TL提供多级低功耗模式,需确认进入的是支持触摸唤醒的"主时钟停振"模式:
c
PCON |= 0x02;// 进入Power Down模式(主时钟停振)
// 或 PCON |= 0x01;// 进入Idle模式(需核对手册是否支持唤醒)
注:不同型号支持的唤醒源存在差异,建议查阅最新版数据手册第12章"低功耗模式"
1.2 触摸唤醒使能标志
必须同时开启全局唤醒功能和通道级使能:
c
TSWU = 1; // 全局触摸唤醒使能(TSCTRL.7)
TSCFG1 |= 0x80;// 对应通道的TPWU位使能(如通道0:TSCFG1 |= 0x80)
1.3 中断配置优化
建议采用以下中断初始化流程:
c
EA = 1; // 全局中断使能
EADC = 1; // ADC中断使能(部分型号触摸模块共用)
ETOUCH = 1; // 专用触摸中断使能(具体寄存器请参考头文件)
二、关键时序调试建议
2.1 唤醒响应时间补偿
在进入低功耗前增加基线校准:
c
TSCAL(); // 执行触摸基准校准
Delayms(20); // 等待电荷平衡稳定
PCON |= 0x02; // 进入Power Down
2.2 唤醒后时钟恢复
唤醒后需重建时钟环境:
c
void wakeupisr() interrupt X// X为实际中断号
{
IRC24MCR = 0x80; // 重新使能内部高速时钟
while (!(IRC24MCR & 0x01)); // 等待时钟稳定
CLKDIV = 0x00; // 恢复时钟分频
// 重新初始化关键外设
}
三、硬件设计检查清单
1. 供电稳定性
测量VDD在休眠期间的纹波应
[本文内容由国芯人工智能辅助生成,仅供参考] 唤醒后程序继续执行,如果 "Sleep_quit_Flag" 没有被清掉的话,马上又进入休眠。
建议先用例程测试,最多修改触摸按键通道,功能验证正常后再进行修改或者移植。
页:
[1]