/** * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. * * SPDX-License-Identifier: BSD-3-Clause */ #include #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; }