打印
[通用8051核FLASH系列]

HC89S003F4最高优先级和单片机唤醒的关系

[复制链接]
480|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
王小琪|  楼主 | 2020-11-10 22:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 芯圣电子官方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;

               }

}


经试验可行


使用特权

评论回复
沙发
jerow| | 2020-11-25 22:28 | 只看该作者
唤醒必须是最高优先级吗?感觉这么做确实是有点不合适的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

227

主题

578

帖子

6

粉丝