This repository has been archived on 2025-01-25. You can view files and clone it, but cannot push or open issues or pull requests.
rp2040_projects/rtc/rtc_alarm_repeat/rtc_alarm_repeat.c
graham sanderson 46078742c7 Initial Release
2021-01-20 16:45:01 -06:00

61 lines
1.2 KiB
C

/**
* Copyright (c) 2021 Raspberry Pi (Trading) Ltd.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <stdio.h>
#include "hardware/rtc.h"
#include "pico/stdlib.h"
#include "pico/util/datetime.h"
static volatile bool fired = false;
static void alarm_callback(void) {
datetime_t t = {0};
rtc_get_datetime(&t);
char datetime_buf[256];
char *datetime_str = &datetime_buf[0];
datetime_to_str(datetime_str, sizeof(datetime_buf), &t);
printf("Alarm Fired At %s\n", datetime_str);
stdio_flush();
fired = true;
}
int main() {
stdio_init_all();
printf("RTC Alarm Repeat!\n");
// Start on Wednesday 13th January 2021 11:20:00
datetime_t t = {
.year = 2020,
.month = 01,
.day = 13,
.dotw = 3, // 0 is Sunday, so 3 is Wednesday
.hour = 11,
.min = 20,
.sec = 00
};
// Start the RTC
rtc_init();
rtc_set_datetime(&t);
// Alarm once a minute
datetime_t alarm = {
.year = -1,
.month = -1,
.day = -1,
.dotw = -1,
.hour = -1,
.min = -1,
.sec = 00
};
rtc_set_alarm(&alarm, &alarm_callback);
// Alarm will keep firing forever
while(1);
return 0;
}