Electronics, programming, VHDL, C++

Table for Selecting STM32 F4 Timers

If you didn’t know already, STM32 F4 MCU’s can have a lot of timers. And not all of them are the same. Some are feature packed, some are 32 bits, some doesn’t support certain interrupt types. Even the most feature-full one may not have a specific function you need. In software you are free to choose any one of them you want for any purpose. But if you need timers for external IO, say for interrupt timing, pwm measurement, pwm generation etc, you have to be careful when designing your hardware layout. Because not all the timers are the same and you can connect a timer to certain pins only. Sometimes you may have 2 different pins to choose, but thats about it.

So I’ve created a table to make it easier to select timers during hardware design. This table is prepared from STM32F4 reference manual (specifically manual for STM32F405/415, STM32F407/417, STM32F427/437 and STM32F429/439 series: RM0090). Note that this information may not be valid for all STM32F4 chips. Some information may be incorrect even. Please be cautious and check your reference manual as well.

TIMER #

TIM1

TIM8

TIM2

TIM5

TIM3

TIM4

TIM9

TIM12

TIM10

TIM11

TIM13

TIM14

TIM6

TIM7

Resolution (bits)

16

16

32

32

16

16

16

16

16

16

16

16

16

16

Prescaler

16

16

16

16

16

16

16

16

16

16

16

16

16

16

Count Up

✓

✓

✓

✓

✓

✓

✓

✓

✓

✓

✓

✓

✓

✓

Count Down

✓

✓

✓

✓

✓

✓

✗

✗

✗

✗

✗

✗

✗

✗

Count Up Down

✓

✓

✓

✓

✓

✓

✗

✗

✗

✗

✗

✗

✗

✗

Input Capture

✓

✓

✓

✓

✓

✓

✓

✓

✓

✓

✓

✓

✗

✗

Output Compare

✓

✓

✓

✓

✓

✓

✓

✓

✓

✓

✓

✓

✗

✗

PWM

✓

✓

✓

✓

✓

✓

✓

✓

✓

✓

✓

✓

✗

✗

One Pulse

✓

✓

✓

✓

✓

✓

✓

✓

✓

✓

✓

✓

✗

✗

# IO Channels

4

4

4

4

4

4

2

2

1

1

1

1

✗

✗

Complementary Outputs

✓

✓

✗

✗

✗

✗

✗

✗

✗

✗

✗

✗

✗

✗

Sync Circuit

✓

✓

✓

✓

✓

✓

✓

✓

✗

✗

✗

✗

✗

✗

Interrupt (Counter overflow)

✓

✓

✓

✓

✓

✓

✓

✓

✓

✓

✓

✓

✗

✗

Interrupt (Counter underflow)

✓

✓

✓

✓

✓

✓

✓

✓

✗

✗

✗

✗

✗

✗

Interrupt (Counter Initialization)

✓

✓

✓

✓

✓

✓

✗

✗

✓

✓

✓

✓

✗

✗

Interrupt (Trigger)

✓

✓

✓

✓

✓

✓

✓

✓

✗

✗

✗

✗

✗

✗

Interrupt (Input Capture)

✓

✓

✓

✓

✓

✓

✓

✓

✓

✓

✓

✓

✗

✗

Interrupt (Output Compare)

✓

✓

✓

✓

✓

✓

✓

✓

✓

✓

✓

✓

✗

✗

Interrupt (Break Input)

✓

✓

✗

✗

✗

✗

✗

✗

✗

✗

✗

✗

✗

✗

Trigger Input

✓

✓

✓

✓

✓

✓

✗

✗

✗

✗

✗

✗

✗

✗

Driving DAC

✗

✗

✗

✗

✗

✗

✗

✗

✗

✗

✗

✗

✓

✓

DMA trigger (counter overflow)

✗

✗

✗

✗

✗

✗

✗

✗

✗

✗

✗

✗

✓

✓

You can download a slightly better looking version (PDF) of this table here.

Here is the source (ODS) file. You can open it with Libre Office Calc.