[通用8051核FLASH系列] HC89S003F4最高优先级和单片机唤醒的关系

[复制链接]
 楼主| 王小琪 发表于 2020-11-10 22:51 | 显示全部楼层 |阅读模式
本帖最后由 芯圣电子官方QQ 于 2023-7-25 14:15 编辑

最近在使用芯圣HC89S003F4时,在使用官方INT1掉电唤醒例程中,无论如何都无法完全唤醒MCU,经厂方查看程序,调试,很快找出原因,由于INT1不是最高优先级,所以唤醒没有成功,后来将INT1的优先级设为最高,就一切正常了。

估计原因是:INT1不是最高优先级,唤醒启动后就被更高优先级的抢去了控制权,就是和和各种中断打架去了,最后谁也干不成活。


IP0 |= 0X30;       //INT1优先级设为最高,唤醒用的中断一定要设为最高优先级。否则有可能唤醒不成功


留做自勉。



补充一下,

上面的问题是因为在低级别中断里执行了掉电命令,由于级别不够,造成唤醒不成功,故要设置最高级中断。

有时序的东西最好不要放到中断执行

如果是在main函数里进入掉电模式,就可以不用设置最高优先级,

  1. bit PD_flag;

  2. main()

  3. {



  4.     while(PD_flag)

  5.     {

  6.             PCON |= 0x02; //进入掉电模式

  7.             PD_flag=0;     

  8.     }

  9. }


其他函数给 PD_flag赋值,

  1. T0_INT()

  2. {

  3.              if(.......)

  4.             {

  5.                   PD_flag=1;

  6.                }

  7. }


经试验可行


jerow 发表于 2020-11-25 22:28 | 显示全部楼层
唤醒必须是最高优先级吗?感觉这么做确实是有点不合适的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

232

主题

585

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部