查看: 909|回复: 0
打印 上一主题 下一主题

STM8S103芯片从HALT低功耗状态唤醒问题 [

[复制链接]
跳转到指定楼层
沙发
发表于 2015-10-8 07:12:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序大致如下:
时钟是内部复位后的时钟
初使化IO时,设定PD6为带内部上拉的中断输入。
在进入停机模式前,先判断是否满足条件,然后进入停机模式(仅有外部复位或PD6的下降沿可将其唤醒)
中断程序为一个空操作汇编指令(即无任何实质代码),目的仅仅是为了让单片机从停机状态醒来。

现在问题是:中断程序返回后,PC指针有时会指向0000,有时又是正常的。
SP指针在进入主函数前是03FF,在执行_asm("halt")前是03FD,通过PD6引脚的唤醒进入中断,此时SP指针为03F4.

但不知何故,有时在进入_asm("halt")前SP指针会是03F4.不得其解

在执行_asm("halt")后,程序会马上转入唤醒中断,但中断返回后程序又指向_asm("halt")这句代码
我想是否会是因为在进入_asm("halt")要清除一些中断触发标志位,但是我在手册中没有发现似乎51单片机的中断触发标志位.
求高手帮忙,谢谢.

main()
{
//一条关中断汇编指令
初始化IO端口,初始化用户变量等
while(1)
  {
   //关中断
   .
   .
   .
   .
   if (进入停机模式的条件)
     {
      //一条停机指令的汇编
      //关中断
     }

  }
}

PD口中断唤醒入口程序()
{
_asm("nop");
}
转载

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入中科因仑

本版积分规则

快速回复 返回顶部 返回列表