 **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
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up