task #5

Merged
Steins7 merged 35 commits from task into dev 2024-08-04 18:30:16 +00:00
Showing only changes of commit 89c81b8c42 - Show all commits

View File

@ -26,6 +26,10 @@
#include "task.h" #include "task.h"
#include "error.h" #include "error.h"
#include "../drv/stk.h" #include "../drv/stk.h"
#include "../drv/pwr.h"
#include "../drv/rcc.h"
#include "../drv/bkp.h"
#include "../drv/exti.h"
//--local definitions----------------------------------------------------------- //--local definitions-----------------------------------------------------------
@ -51,7 +55,13 @@ static volatile uint32_t timestamp;
void task_start_scheduler(void) void task_start_scheduler(void)
{ {
stk_configure(1000, callback_stk); stk_configure(1000, callback_stk);
//TODO: configure RTC
rcc_configure_lsi(true);
pwr_configure_bkp_write(true);
bkp_reset();
bkp_configure_rtc(1000, BKP_RTC_CLOCK_SRC_LSI, BKP_RTC_IRQ_NONE, nullptr);
pwr_configure_bkp_write(false);
exti_configure(EXTI_LINE_RTC, EXTI_CONFIG_RISING_EDGE, callback_rtc);
while (true) { while (true) {
uint8_t triggers = stk_irq << 0 | rtc_irq << 1; uint8_t triggers = stk_irq << 0 | rtc_irq << 1;
@ -65,10 +75,13 @@ void task_start_scheduler(void)
if (stk_needed) { if (stk_needed) {
stk_start(); stk_start();
__asm("wfi"); pwr_sleep();
} else { } else {
pwr_configure_bkp_write(true);
bkp_set_rtc_alam(1);
pwr_configure_bkp_write(false);
stk_stop(); stk_stop();
//TODO: enter deep sleep pwr_sleep();
} }
} }
} }
@ -158,4 +171,5 @@ static void callback_stk(void)
static void callback_rtc(void) static void callback_rtc(void)
{ {
rtc_irq = true; rtc_irq = true;
timestamp = bkp_read_rtc() * 1000;
} }