神农鼎 发表于 2024-3-21 17:19:33

329008861 发表于 2024-3-21 14:45
/********************* INT0中断函数 *************************/
void INT0_int (void) interrupt 0    ...

看是在主循环加 NOP 有效,还是在 中断服务程序加 NOP 有效,帮测试后,给个结论

乘风飞扬 发表于 2024-3-21 18:12:00

329008861 发表于 2024-3-21 14:45
/********************* INT0中断函数 *************************/
void INT0_int (void) interrupt 0    ...

主频设置45MHz太极限了,IRC设置40MHz使用附件例程试试看。
可以根据需要修改指示灯脚位,外部中断函数是空的也不影响,测试多次没发现问题。

神农鼎 发表于 2024-3-21 18:21:49

前面我糊涂了以为是 40MHz, 结果是 45MHz, 用稳妥的 40MHz

329008861 发表于 2024-3-22 08:55:01

神农鼎 发表于 2024-3-21 17:19
看是在主循环加 NOP 有效,还是在 中断服务程序加 NOP 有效,帮测试后,给个结论 ...
如果是用掉电唤醒定时器唤醒,就要在主循环里面加;
如果是外部中断唤醒,就要在中断服务程序里面加;
两个唤醒都用到的话,都要加。

现在把代码移植过去项目后,发现:
如果在主循环和中断程序里面各加60个NOP的话,程序大部分情况正常运行,
出现了一次通过外部触发唤醒后,定时器停止工作了,也就是不能再次进入睡眠状态;
如果加了各80个NOP,通过掉电定时器唤醒就正常工作,通过外部触发唤醒的话就会进入死机状态。
所以现在遇到的问题就是NOP要写多少个,还有唤醒后定时器停止工作。

329008861 发表于 2024-3-22 08:56:46

乘风飞扬 发表于 2024-3-21 18:12
主频设置45MHz太极限了,IRC设置40MHz使用附件例程试试看。
可以根据需要修改指示灯脚位,外部中断函数是 ...

好的,我测试一下看看

神农鼎 发表于 2024-3-22 09:14:59

中断服务向量入口地址,只有8个字节,后面是其他可能要用到的中断向量入口地址

329008861 发表于 2024-3-22 09:40:44

用 40MHz 的主频测试了半小时,之前的问题都没有出现过了,
应该是主频太高的原因,我再测试一下看看还有没有其他问题。

_奶咖君_ 发表于 2024-3-22 15:32:24

我记得 STC8AD4 就是45I啊    难道说这个45M情况下不是所有的功能都能用么?
页: 1 [2]
查看完整版本: 关于STC8A8K64D4省电模式不能唤醒求教