热心市民 发表于 前天 10:18

用按键带唤醒功能的参考代码修改了之后使用有点问题,请教

STC8H4K64TL参考这个帖子写了程序, 正常工作是没有问题,但是休眠后我用触摸去唤醒,好像唤不醒呢 请哪位工程师帮忙看看呢,谢谢
触摸按键唤醒,1uA/1个键/1秒唤醒,STC触摸MCU, 唤醒【主时钟停振/省电模式】
https://www.stcaimcu.com/thread-5167-1-1.html
(出处: 国芯技术交流网站)



国芯人工智能 发表于 前天 10:23

针对您在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在休眠期间的纹波应

[本文内容由国芯人工智能辅助生成,仅供参考]

乘风飞扬 发表于 前天 15:30

唤醒后程序继续执行,如果 "Sleep_quit_Flag" 没有被清掉的话,马上又进入休眠。
建议先用例程测试,最多修改触摸按键通道,功能验证正常后再进行修改或者移植。
页: [1]
查看完整版本: 用按键带唤醒功能的参考代码修改了之后使用有点问题,请教