Timer and SysTick register defines and API for STM32F4 (Cortex-M4). More...
Go to the source code of this file.
Functions | |
void | systick_init (uint32_t tick_us) |
Initialize the SysTick timer to generate periodic ticks. | |
void | delay_ms (uint32_t ms) |
Busy-wait for the specified number of milliseconds. | |
void | delay_us (uint64_t us) |
Busy-wait for the specified number of microseconds. | |
uint64_t | hal_get_tick (void) |
Return the current system tick count. | |
uint32_t | hal_get_tick_duration_us (void) |
Return the configured tick duration in microseconds. | |
uint32_t | hal_get_tick_reload_value (void) |
Return the SysTick reload value (24-bit truncated). | |
uint32_t | hal_get_millis (void) |
Return system uptime in milliseconds. | |
uint32_t | hal_get_micros (void) |
Return system uptime in microseconds. | |
void | SysTick_Handler (void) |
SysTick interrupt handler increments the global tick counter. | |
void | hal_systick_set_callback (void(*cb)(void)) |
void | timer_init (hal_timer_t timer, uint32_t prescaler, uint32_t auto_reload) |
Initialize a timer based on its type (advanced / gp1 / gp2). | |
void | timer_start (hal_timer_t timer) |
Start the specified timer. | |
void | timer_stop (hal_timer_t timer) |
Stop the specified timer. | |
void | timer_reset (hal_timer_t timer) |
Reset timer counter to zero. | |
uint32_t | timer_get_count (hal_timer_t timer) |
Get the current counter value for a timer. | |
void | timer_enable_interrupt (hal_timer_t timer) |
Enable timer interrupts (NVIC + DIER UIE) for supported timers. | |
void | timer_disable_interrupt (hal_timer_t timer) |
void | timer_clear_interrupt_flag (hal_timer_t timer) |
void | timer_attach_callback (hal_timer_t timer, void(*callback)(void)) |
Attach a callback to the timer's HAL interrupt table. | |
void | timer_detach_callback (hal_timer_t timer) |
Detach a previously attached callback for the given timer. | |
void | TIM2_IRQHandler (void) |
IRQ handler wrapper for TIM2. | |
void | TIM3_IRQHandler (void) |
IRQ handler wrapper for TIM3. | |
void | TIM4_IRQHandler (void) |
IRQ handler wrapper for TIM4. | |
void | TIM5_IRQHandler (void) |
IRQ handler wrapper for TIM5. | |
void | TIM9_IRQHandler (void) |
void | TIM12_IRQHandler (void) |
void | timer_set_compare (hal_timer_t timer, uint8_t channel, uint32_t compare_value) |
Set the compare (CCR) register for a timer channel and configure CCMR. | |
uint32_t | timer_get_compare (hal_timer_t timer, uint32_t channel) |
uint32_t | timer_get_arr (hal_timer_t timer, uint32_t channel) |
void | timer_set_arr (hal_timer_t timer, uint32_t channel, uint32_t arr) |
void | timer_enable_channel (hal_timer_t timer, uint32_t channel) |
void | timer_disable_channel (hal_timer_t timer, uint32_t channel) |
Disable output on the specified timer channel (CCxE = 0). | |
uint32_t | timer_get_frequency (hal_timer_t timer) |
Calculate the timer's current base frequency using PSC and ARR. | |
void | timer_set_prescaler (hal_timer_t timer, uint32_t prescaler) |
void | timer_set_auto_reload (hal_timer_t timer, uint32_t arr) |
Timer and SysTick register defines and API for STM32F4 (Cortex-M4).
This header contains register offsets, bit definitions, SysTick control, timer base addresses, and the public timer/SysTick API used by the HAL. All defines and function prototypes are intended for the STM32F4 series on a Cortex-M4 core.
#define RCC_APB1ENR_TIM2_OFFSET 0 |
#define RCC_APB1ENR_TIM3_OFFSET 1 |
#define RCC_APB1ENR_TIM4_OFFSET 2 |
#define RCC_APB1ENR_TIM5_OFFSET 3 |
#define RCC_APB2ENR_TIM10_OFFSET 17 |
#define RCC_APB2ENR_TIM11_OFFSET 18 |
#define RCC_APB2ENR_TIM1_OFFSET 0 |
#define RCC_APB2ENR_TIM9_OFFSET 16 |
#define RCC_BASE 0x40023800 |
#define SYST_CALIB (*(__IO uint32_t *)0xE000E01C) |
#define SYST_CSR (*(__IO uint32_t *)0xE000E010) |
#define SYST_CSR_CLKSOURCE_BIT 2 |
#define SYST_CSR_EN_BIT 0 |
#define SYST_CSR_TICKINT_BIT 1 |
#define SYST_CVR (*(__IO uint32_t *)0xE000E018) |
#define SYST_RVR (*(__IO uint32_t *)0xE000E014) |
#define TIM10_BASE 0x40014400 |
#define TIM11_BASE 0x40014800 |
#define TIM1_BASE 0x40010000 |
#define TIM2_BASE 0x40000000 |
#define TIM3_BASE 0x40000400 |
#define TIM4_BASE 0x40000800 |
#define TIM5_BASE 0x40000C00 |
#define TIM9_BASE 0x40014000 |
#define TIM_ADV_ARR_OFFSET 0x2C |
#define TIM_ADV_CNT_OFFSET 0X24 |
#define TIM_ADV_CR1_CEN_BIT 0x00 |
#define TIM_ADV_CR1_OFFSET 0x00 |
#define TIM_ADV_DIER_OFFSET 0X0C |
#define TIM_ADV_DIER_UIE_BIT 0x00 |
#define TIM_ADV_EGR_OFFSET 0x14 |
#define TIM_ADV_EGR_UG_BIT 0x00 |
#define TIM_ADV_PSC_OFFSET 0x28 |
#define TIM_GP1_ARR_OFFSET 0x2C |
#define TIM_GP1_CNT_OFFSET 0X24 |
#define TIM_GP1_CR1_CEN_BIT 0x00 |
#define TIM_GP1_CR1_OFFSET 0x00 |
#define TIM_GP1_DIER_OFFSET 0X0C |
#define TIM_GP1_DIER_UIE_BIT 0x00 |
#define TIM_GP1_EGR_OFFSET 0x14 |
#define TIM_GP1_EGR_UG_BIT 0x00 |
#define TIM_GP1_PSC_OFFSET 0x28 |
#define TIM_GP1_SR_OFFSET 0x10 |
#define TIM_GP1_SR_UIF_BIT 0x00 |
#define TIM_GP2_ARR_OFFSET 0x2C |
#define TIM_GP2_CNT_OFFSET 0X24 |
#define TIM_GP2_CR1_CEN_BIT 0x00 |
#define TIM_GP2_CR1_OFFSET 0x00 |
#define TIM_GP2_DIER_OFFSET 0X0C |
#define TIM_GP2_DIER_UIE_BIT 0x00 |
#define TIM_GP2_EGR_OFFSET 0x14 |
#define TIM_GP2_EGR_UG_BIT 0x0 |
#define TIM_GP2_PSC_OFFSET 0x28 |
#define TIM_GP2_SR_OFFSET 0x10 |
#define TIM_GP2_SR_UIF_BIT 0x00 |
#define TIMx_CCER_CC1E_BIT 0 |
#define TIMx_CCER_CC2E_BIT 4 |
#define TIMx_CCER_CC3E_BIT 8 |
#define TIMx_CCER_CC4E_BIT 12 |
#define TIMx_CCER_OFFSET 0x20 |
#define TIMx_CCMR1_OC1M_BIT 4 |
#define TIMx_CCMR1_OC1M_PWM_MODE1 0x6 |
#define TIMx_CCMR1_OC1M_PWM_MODE2 0x07 |
#define TIMx_CCMR1_OC1PE_BIT 3 |
#define TIMx_CCMR1_OFFSET 0x18 |
#define TIMx_CCMR2_OFFSET 0x1c |
#define TIMx_CCR1_OFFSET 0x34 |
#define TIMx_CCR2_OFFSET 0x38 |
#define TIMx_CCR3_OFFSET 0x3C |
#define TIMx_CCR4_OFFSET 0x40 |
void delay_ms | ( | uint32_t | ms | ) |
Busy-wait for the specified number of milliseconds.
ms | Number of milliseconds to delay. |
void delay_us | ( | uint64_t | us | ) |
Busy-wait for the specified number of microseconds.
us | Number of microseconds to delay. |
uint32_t hal_get_micros | ( | void | ) |
Return system uptime in microseconds.
uint32_t hal_get_millis | ( | void | ) |
Return system uptime in milliseconds.
uint64_t hal_get_tick | ( | void | ) |
Return the current system tick count.
uint32_t hal_get_tick_duration_us | ( | void | ) |
Return the configured tick duration in microseconds.
uint32_t hal_get_tick_reload_value | ( | void | ) |
Return the SysTick reload value (24-bit truncated).
void hal_systick_set_callback | ( | void(* | cb )(void) | ) |
void SysTick_Handler | ( | void | ) |
SysTick interrupt handler increments the global tick counter.
void systick_init | ( | uint32_t | tick_us | ) |
Initialize the SysTick timer to generate periodic ticks.
tick_us | Tick period in microseconds. |
void TIM12_IRQHandler | ( | void | ) |
void TIM2_IRQHandler | ( | void | ) |
IRQ handler wrapper for TIM2.
Clears the flag and dispatches to the HAL interrupt handler table.
void TIM3_IRQHandler | ( | void | ) |
IRQ handler wrapper for TIM3.
void TIM4_IRQHandler | ( | void | ) |
IRQ handler wrapper for TIM4.
void TIM5_IRQHandler | ( | void | ) |
IRQ handler wrapper for TIM5.
void TIM9_IRQHandler | ( | void | ) |
void timer_attach_callback | ( | hal_timer_t | timer, |
void(* | callback )(void) ) |
Attach a callback to the timer's HAL interrupt table.
timer | Timer identifier. |
callback | Function pointer to call when the timer IRQ fires. |
void timer_clear_interrupt_flag | ( | hal_timer_t | timer | ) |
void timer_detach_callback | ( | hal_timer_t | timer | ) |
Detach a previously attached callback for the given timer.
timer | Timer identifier. |
void timer_disable_channel | ( | hal_timer_t | timer, |
uint32_t | channel ) |
Disable output on the specified timer channel (CCxE = 0).
timer | Timer identifier. |
channel | Channel number (1-4). |
void timer_disable_interrupt | ( | hal_timer_t | timer | ) |
void timer_enable_channel | ( | hal_timer_t | timer, |
uint32_t | channel ) |
void timer_enable_interrupt | ( | hal_timer_t | timer | ) |
Enable timer interrupts (NVIC + DIER UIE) for supported timers.
timer | Timer identifier. |
uint32_t timer_get_arr | ( | hal_timer_t | timer, |
uint32_t | channel ) |
uint32_t timer_get_compare | ( | hal_timer_t | timer, |
uint32_t | channel ) |
uint32_t timer_get_count | ( | hal_timer_t | timer | ) |
Get the current counter value for a timer.
timer | Timer identifier. |
uint32_t timer_get_frequency | ( | hal_timer_t | timer | ) |
Calculate the timer's current base frequency using PSC and ARR.
timer | Timer identifier. |
void timer_init | ( | hal_timer_t | timer, |
uint32_t | prescaler, | ||
uint32_t | auto_reload ) |
Initialize a timer based on its type (advanced / gp1 / gp2).
timer | Timer identifier. |
prescaler | Prescaler value. |
auto_reload | Auto-reload value. |
void timer_reset | ( | hal_timer_t | timer | ) |
Reset timer counter to zero.
timer | Timer identifier. |
void timer_set_arr | ( | hal_timer_t | timer, |
uint32_t | channel, | ||
uint32_t | arr ) |
void timer_set_auto_reload | ( | hal_timer_t | timer, |
uint32_t | arr ) |
void timer_set_compare | ( | hal_timer_t | timer, |
uint8_t | channel, | ||
uint32_t | compare_value ) |
Set the compare (CCR) register for a timer channel and configure CCMR.
timer | Timer identifier. |
channel | Channel number (1-4). |
compare_value | Value to write into CCRx. |
void timer_set_prescaler | ( | hal_timer_t | timer, |
uint32_t | prescaler ) |
void timer_start | ( | hal_timer_t | timer | ) |
Start the specified timer.
timer | Timer identifier. |
void timer_stop | ( | hal_timer_t | timer | ) |
Stop the specified timer.
timer | Timer identifier. |