Estoy tratando de poner un cortex m4 procesador (m3 con dsp extensiones), para dormir un poco menos de un segundo. Quiero ser capaz de decir a dormir, a continuación, un segundo más tarde, o cuando se pulsa un botón, recoger justo donde lo dejé. He mirado en el manual de referencia y VLP o LLS modos de ver como se ajusta a mis necesidades. Idealmente me gustaría una glorificado función de retardo, para que el sueño de un segundo. No sé cómo empezar a entrar en ese modo o la forma de programar el NVIC. Estoy usando C en bare metal.
Cualquier ayuda sería muy apreciada.
Aquí está el código:
#include "IntervalTimer.h"
//The following is where the SLEEPDEEP flag is at
#define SCR (*((volatile unsigned long *) 0xE000ED10))
volatile uint32_t timerCounter0;
boolean printNow = false;
void timerCallback0() {
timerCounter0++;
printNow = true;
}
void setup() {
SCR = SCR | 0x04; //Set SLEEPDEEP
Serial.begin(true);
IntervalTimer timer0;
timer0.begin(timerCallback0, 1000000);
}
void loop() {
if (printNow) {
Serial.println(timerCounter0);
printNow = false;
asm("wfi\n");
}
}