61 lines
1.2 KiB
C
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;
|
|
} |