mirror of
https://github.com/mytechnotalent/Embedded-Hacking.git
synced 2026-07-15 00:17:25 +02:00
style: enforce coding standard — headers, @brief on #define, Doxygen on statics, remove _ prefix, max 8 lines per function
This commit is contained in:
@@ -1,37 +1,46 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file rp2350_timer.c
|
||||
* @author Kevin Thomas
|
||||
* @brief TIMER0 alarm driver implementation for RP2350.
|
||||
*
|
||||
* Configures the TIMER0 tick generator for 1 us resolution
|
||||
* from the 12 MHz CLK_REF, then uses alarm 0 with NVIC IRQ
|
||||
* to implement a repeating callback at a configurable period.
|
||||
*
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2026 Kevin Thomas.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This software is licensed under terms that can be found in the LICENSE file
|
||||
* in the root directory of this software component.
|
||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
* @file rp2350_timer.c
|
||||
* @brief TIMER0 alarm driver implementation for RP2350.
|
||||
* @author Kevin Thomas
|
||||
* @date 2026
|
||||
*
|
||||
* Configures the TIMER0 tick generator for 1 us resolution
|
||||
* from the 12 MHz CLK_REF, then uses alarm 0 with NVIC IRQ
|
||||
* to implement a repeating callback at a configurable period.
|
||||
*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2026 Kevin Thomas
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
#include "rp2350_timer.h"
|
||||
|
||||
/**
|
||||
* @brief User callback and period stored for ISR re-arm.
|
||||
*/
|
||||
static timer_callback_t _user_callback;
|
||||
static timer_callback_t user_callback;
|
||||
|
||||
/**
|
||||
* @brief Alarm period in microseconds for re-arming.
|
||||
*/
|
||||
static uint32_t _alarm_period_us;
|
||||
static uint32_t alarm_period_us;
|
||||
|
||||
/**
|
||||
* @brief Clear the TIMER0 reset bit in the reset controller.
|
||||
@@ -97,7 +106,7 @@ static void timer_enable_nvic(void)
|
||||
static void timer_arm_alarm(void)
|
||||
{
|
||||
uint32_t target;
|
||||
target = TIMER0->TIMERAWL + _alarm_period_us;
|
||||
target = TIMER0->TIMERAWL + alarm_period_us;
|
||||
TIMER0->ALARM0 = target;
|
||||
}
|
||||
|
||||
@@ -115,8 +124,8 @@ void timer_tick_init(void)
|
||||
|
||||
void timer_alarm_start(uint32_t period_ms, timer_callback_t cb)
|
||||
{
|
||||
_user_callback = cb;
|
||||
_alarm_period_us = period_ms * 1000U;
|
||||
user_callback = cb;
|
||||
alarm_period_us = period_ms * 1000U;
|
||||
timer_enable_alarm_irq();
|
||||
timer_enable_nvic();
|
||||
timer_arm_alarm();
|
||||
@@ -126,6 +135,6 @@ void TIMER0_IRQ_0_Handler(void)
|
||||
{
|
||||
TIMER0->INTR = TIMER_INTR_ALARM0_MASK;
|
||||
timer_arm_alarm();
|
||||
if (_user_callback)
|
||||
_user_callback();
|
||||
if (user_callback)
|
||||
user_callback();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user