 **STM32 Timer Overview** [STM32](https://www.ampheo.com/search/STM32) timers are versatile and categorized as:  Each timer has: * Prescaler (PSC) – Divides input clock * Auto-reload register (ARR) – Sets timer period * Counter (CNT) – Current count value * Interrupts – Triggered on overflow (update event) **Example: 1-Second Timer Interrupt (Using TIM2)** **Objective:** Generate a 1 Hz interrupt using TIM2 on [STM32](https://www.ampheoelec.de/search/STM32) (assume 72 MHz system clock) **Steps:** **1. Clock Configuration** Make sure TIM2 is enabled: ``` c RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; ``` **2. Configure Prescaler & ARR** ``` c TIM2->PSC = 7200 - 1; // 72 MHz / 7200 = 10 kHz TIM2->ARR = 10000 - 1; // 10 kHz / 10000 = 1 Hz (1-second period) ``` **3. Enable Interrupt and Start Timer** ``` c TIM2->DIER |= TIM_DIER_UIE; // Update interrupt enable TIM2->CR1 |= TIM_CR1_CEN; // Enable timer NVIC_EnableIRQ(TIM2_IRQn); // Enable TIM2 interrupt in NVIC ``` **4. Interrupt Handler** ``` c void TIM2_IRQHandler(void) { if (TIM2->SR & TIM_SR_UIF) // Check update interrupt flag { TIM2->SR &= ~TIM_SR_UIF; // Clear interrupt flag // Your code here: toggle LED, increment counter, etc. } } ``` **Key Notes** * Timer clocks are on APB1/APB2, which may be prescaled – always check in CubeMX or reference manual. * You can use STM32CubeIDE or HAL libraries to configure this with abstraction.
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.