极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2361|回复: 2

LGT8F328P 看门狗中断无法启用问题。

[复制链接]
发表于 2020-2-18 12:27:46 | 显示全部楼层 |阅读模式
本帖最后由 a461624201 于 2020-2-18 12:40 编辑

网上类似问题:https://forum.arduino.cc/index.php?topic=599892.msg4075726
附件的例子nano下可以正常运行,但是LGT8F328P就会不停复位,根据手册也没找到语法问题。
难道有某些的寄存器导致单片机周期和nano不一致了?
WDTCSR  =(1<<WDIE)|(1<<WDP2)|(1<<WDP1)|(1<<WDP0);  这个是8秒一次溢出产生中断。

kan_men_gou_nano__.zip

649 Bytes, 下载次数: 2

ino

回复

使用道具 举报

发表于 2020-3-17 10:10:01 | 显示全部楼层
用专门的库
  1.   #include <PMU.h>
复制代码

和 nano 不一样

写SD卡貌似也得用专门的库
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-6 17:47:51 | 显示全部楼层
#include "PMU.h"


volatile int kan_mengou=0;


void setup() {
  pinMode(13, OUTPUT);   digitalWrite(13, LOW);  

Serial.begin(9600);Serial.println("Start");
delay(3333);

ADCSRA = 0;
  
  PMU.sleep(PM_POFFS1,SLEEP_8S);   
}  
String _10_to_2_string(byte a){
   byte   e=B10000000;String A;
    for (int j=0;j<=7;j++)
                { if(e&a  ) A=A+"1";
                        else A=A+"0";e=e>>1;
                  
                  }
     String         s= A; s= s.substring(0,4)+" "+s.substring(4,8);      
     int aa=8-s.length();  
     for (int jj=0;jj<=aa;jj++) s="0"+s;
     
      return (s);
}
          //设定为 溢出中断 及 8s的狗
//                                   //看门狗预分频选择列表:
//WDP3 WDP2 WDP1 WDP0   看门狗定时器溢出周期数     32KHz时钟   2MHz时钟
//0 0 0 0                                  2K cycles 64ms 1ms
//0 0 0 1                                   4K cycles 128ms 2ms
//0 0 1 0                                   8K cycles 256ms 4ms
//0 0 1 1                                    16K cycles 512ms 8ms
//0 1 0 0                                      32K cycles 1s 16ms
//0 1 0 1                                     64K cycles 2s 32ms
//0 1 1 0                                     128K cycles 4s 64ms
//0 1 1 1                                     256K cycles 8s 128ms
//1 0 0 0                                      512K cycles 16s 256ms
//1 0 0 1                                      1024K cycles 32s 512ms
                              
                  

                             
void loop()  
{ kan_mengou=kan_mengou+1;
               
   if(kan_mengou>=2){
  Serial.begin(9600);Serial.println( "   WDIF    WDIE  WDP3  WDCE            WDE   WDP2   WDP1    WDP0 ");
   Serial.print ( _10_to_2_string ( WDTCSR));
   Serial.println("    I have sleep in :"+String(kan_mengou )+"*8");
      pinMode(13, OUTPUT); digitalWrite(13, 1);  
     delay(5333);
     pinMode(13, OUTPUT); digitalWrite(13, 0);  
     kan_mengou=0;
  PMU.sleep(PM_POFFS1,SLEEP_8S);   
   }
else

PMU.sleep(PM_POFFS1, SLEEP_8S);  //SLEEP_32S SLEEP_8S


}

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )

GMT+8, 2020-7-13 20:52 , Processed in 0.049248 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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