Updated Drivers

This commit is contained in:
Kevin Thomas
2026-03-23 09:33:04 -04:00
parent 6ee30d0520
commit 91faba6800
31 changed files with 834 additions and 344 deletions
+17 -6
View File
@@ -40,17 +40,28 @@
#include "pico/stdlib.h"
#include "timer.h"
static bool heartbeat_callback(void) {
/**
* @brief Heartbeat timer callback that prints a message over UART
*
* @return bool true to keep the repeating timer active
*/
static bool _heartbeat_callback(void) {
printf("Timer heartbeat\r\n");
return true;
}
/**
* @brief Application entry point for the repeating timer demo
*
* Starts a 1-second repeating timer whose callback prints a
* heartbeat message over UART.
*
* @return int Does not return
*/
int main(void) {
stdio_init_all();
timer_driver_start(1000, heartbeat_callback);
while (true) {
timer_driver_start(1000, _heartbeat_callback);
while (true)
tight_loop_contents();
}
}
+14 -9
View File
@@ -34,29 +34,34 @@ static repeating_timer_t g_timer;
static bool g_timer_active = false;
static timer_driver_callback_t g_user_callback = NULL;
static bool timer_shim(repeating_timer_t *rt) {
/**
* @brief Internal repeating-timer callback that forwards to the user callback
*
* @param rt Unused repeating-timer handle provided by the SDK
* @return bool true to keep the timer running, false to cancel
*/
static bool _timer_shim(repeating_timer_t *rt) {
(void)rt;
if (g_user_callback) {
if (g_user_callback)
return g_user_callback();
}
return false;
}
void timer_driver_start(int32_t period_ms, timer_driver_callback_t callback) {
if (g_timer_active) {
cancel_repeating_timer(&g_timer);
g_timer_active = false;
}
g_user_callback = callback;
g_timer_active = add_repeating_timer_ms(period_ms, timer_shim, NULL, &g_timer);
g_timer_active = add_repeating_timer_ms(period_ms, _timer_shim, NULL, &g_timer);
}
void timer_driver_cancel(void) {
if (!g_timer_active) {
return;
}
void timer_driver_cancel(void) {
if (!g_timer_active)
return;
cancel_repeating_timer(&g_timer);
g_timer_active = false;
}