====== Basic Timer ======
\\ {{timer_base.svg}} \\ \\
===== Configuration Registers =====
==== TIMx_CR1 - Configuration register 1 ====
\\ {{timer_reg_cr1.svg}} \\ \\
|< 100% 5em 5em >|
|DIR*|0|Counter used as upcounter (reset state)|
|:::|1|Counter used as downcounter|
|OPM|0|Counter is **not** stopped at update event (reset state)|
|:::|1|Counter stops at the next update event|
|CEN|0|Counter disabled (reset state)|
|:::|1|Counter enabled|
//*This bit is readonly in center-aligned or encoder mode// \\
==== TIMx_DIER - DMA / Interrupt enable register ====
\\ {{timer_reg_dier.svg}} \\ \\
|< 100% 5em 5em >|
|UDE|0|Update DMA request disabled (reset state)|
|:::|1|Update DMA request enabled|
|CC1IE|0|CC1 interrupt disabled (reset state)|
|:::|1|CC1 interrupt enabled|
|UIE|0|Update interrupt disabled (reset state)|
|:::|1|Update interrupt enabled|
==== TIMx_SMCR - Slave mode control register ====
\\ {{timer_reg_smcr.svg}} \\ \\
|< 100% 5em 5em 20em 5em >|
|ECE|0|External clock mode 2 disabled (reset state)||
|:::|1|External clock mode 2 enabled. Clock enabled by any active edge on ETRF||
|ETF|0000|No filter, fDTS (reset state)|1000|fsampling => fDTS / 8, N=6|
|:::|0001|fsampling => fCKINT, N=2|1001|fsampling => fDTS / 8, N=8|
|:::|0010|fsampling => fCKINT, N=4|1010|fsampling => fDTS / 16, N=5|
|:::|0011|fsampling => fCKINT, N=8|1011|fsampling => fDTS / 16, N=6|
|:::|0100|fsampling => fDTS / 2, N=6|1100|fsampling => fDTS / 16, N=8|
|:::|0101|fsampling => fDTS / 2, N=8|1101|fsampling => fDTS / 32, N=5|
|:::|0110|fsampling => fDTS / 4, N=6|1110|fsampling => fDTS / 32, N=6|
|:::|0111|fsampling => fDTS / 4, N=8|1111|fsampling => fDTS / 32, N=8|
|TS |000|Internal Trigger 0 (ITR0) (reset state)|100| TI1 Edge Detector (TI1F_ED)|
|:::|001|Internal Trigger 1 (ITR1)|101|Filtered Timer Input 1 (TI1FP1)|
|:::|010|Internal Trigger 2 (ITR2)|110| Filtered Timer Input 2 (TI2FP2)|
|:::|011|Internal Trigger 3 (ITR3)|111|External Trigger input (ETRF)|
|SMS|000|Slave mode disabled (reset state)|100|Reset mode|
|:::|001|Encoder mode 1|101|Gated mode|
|:::|010|Encoder mode 2|110|Trigger mode|
|:::|011|Encoder mode 3|111|External clock mode 1|
==== TIMx_PSC - Prescaler register ====
\\ {{timer_reg_psc.svg}} \\ \\
==== TIMx_ARR - Auto reload register ====
\\ {{timer_reg_arr.svg}} \\ \\
===== Data Registers =====
==== TIMx_CNT - Count register ====
\\ {{timer_reg_cnt.svg}} \\ \\
===== Programming Example =====
The code snippet below shows how to configure and use a timer.
#include "reg_stm32f4xx.h"
RCC->APB1ENR |= (0x1 << 0u); /* Enable TIM2 clock. */
/* configure timer */
TIM2->PSC = 0u; /* Counting with f = 84MHz / 1 = 84MHz */
TIM2->ARR = 84000u - 1u; /* Count to 84000 */
TIM2->CR1 |= (0x1 << 0u); /* Start timer */
\\