打印
[开发工具]

不会循环在while(1)中

[复制链接]
433|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wenfen|  楼主 | 2020-2-15 16:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 小卡 于 2020-2-19 13:46 编辑

看门狗开启,器件唤醒之后会复位从0000h开始执行,而不会循环在while(1)中,请问各位?
void main()
{
  TRISD=0X00;
  LATD=0X01;
while(1)
{
  WDTCONbits.WDTPS=0b01100;             //4s定时
  WDTCONbits.SWDTEN=1;                     //开启看门狗
   SLEEP();
   nop();
   LATD=0XFF;
}
}

使用特权

评论回复
沙发
chenho| | 2020-2-15 16:06 | 只看该作者
这是什么问题?自己都不知道自己 想说啥

使用特权

评论回复
板凳
dingy| | 2020-2-15 16:09 | 只看该作者
开启了看门狗在睡眠下继续工作,看门狗超时复位,自然是从0000H执行了,看门狗复位和上电复位类似

使用特权

评论回复
地板
幸福小强| | 2020-2-15 20:53 | 只看该作者
都复位了,你还想从哪儿运行。你可以在main开始弄个复位类型判断,让它直接跳转到while。

使用特权

评论回复
5
幸福小强| | 2020-2-15 21:00 | 只看该作者
每种串口都对应一个标志位的。

使用特权

评论回复
6
dingy| | 2020-2-16 09:44 | 只看该作者
睡眠模式下,看门狗溢出,从SLEEP()下一条指令开始执行

使用特权

评论回复
7
wenfen|  楼主 | 2020-2-16 09:47 | 只看该作者

明白了,多谢大家讨论这么多哈

使用特权

评论回复
8
奔波儿熊| | 2020-2-19 11:15 | 只看该作者
你这是复位吧,不是唤醒啊

使用特权

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

本版积分规则

737

主题

8940

帖子

8

粉丝