LGT8F328P 看门狗中断无法启用问题。
本帖最后由 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秒一次溢出产生中断。
:lol 用专门的库
#include <PMU.h>
和 nano 不一样
写SD卡貌似也得用专门的库 #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 WDIEWDP3WDCE 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
}
页:
[1]