本帖最后由 芯圣电子官方QQ 于 2023-7-25 14:15 编辑
最近在使用芯圣HC89S003F4时,在使用官方INT1掉电唤醒例程中,无论如何都无法完全唤醒MCU,经厂方查看程序,调试,很快找出原因,由于INT1不是最高优先级,所以唤醒没有成功,后来将INT1的优先级设为最高,就一切正常了。 估计原因是:INT1不是最高优先级,唤醒启动后就被更高优先级的抢去了控制权,就是和和各种中断打架去了,最后谁也干不成活。
IP0 |= 0X30; //INT1优先级设为最高,唤醒用的中断一定要设为最高优先级。否则有可能唤醒不成功
留做自勉。
补充一下, 上面的问题是因为在低级别中断里执行了掉电命令,由于级别不够,造成唤醒不成功,故要设置最高级中断。 有时序的东西最好不要放到中断执行 如果是在main函数里进入掉电模式,就可以不用设置最高优先级, - bit PD_flag;
- main()
- {
-
- while(PD_flag)
- {
- PCON |= 0x02; //进入掉电模式
- PD_flag=0;
- }
- }
其他函数给 PD_flag赋值, - T0_INT()
- {
- if(.......)
- {
- PD_flag=1;
- }
- }
经试验可行
|