Welcome to STM32-BoardCar repository
10. Universal Timer (TIM3)
Universal timers
Universal timers1、software-hardware2、Brief principle2.1、Hardware schematic diagram2.2、Physical connection diagram2.3、Principle of control3、Engineering configuration3.1、Notes3.2、Pin configuration4、Main functionFunction analysis5、Experimental phenomenon
This tutorial demonstrates how to control an onboard RGB breathing light on a development board using a Universal Timer (TIM3) .
1、software-hardware
STM32F103CubeIDE
STM32 robot extension board
TIM: Chip internal peripherals
RGB: Onboard
Type-C cable or ST-Link
Download or simulate the program of the development board
2、Brief principle
2.1、Hardware schematic diagram

2.2、Physical connection diagram

2.3、Principle of control
By changing the duty cycle of the PWM signal, the Angle of rotation of the servo is controlled
- PWM(Pulse Width Modulation)
PWM, short for Pulse width modulation, is a technique that controls the level by adjusting the pulse width of a signal.
Period:the duration of a complete PWM waveform;
Duty cycle:The ratio of the duration of the high level to the cycle time;
Frequency:The inverse of the period is called frequency, which is the number of PWM cycles generated per second;
Universal timers
The timing counting function of TIM3 on the STM32F103ZET6 development board is used
- The Basics
| Timer types | Universal timers |
|---|---|
| The timer name | TIM2、TIM3、TIM4、TIM5 |
| Number of counter bits | 16 |
| Counting mode | Increase/decrease/center alignment |
| Predivision coefficient | 1-65536 |
| Generating DMA requests | Yes |
| Capture/compare channels | 4 |
| Complementary output | No |
| Clock frequency | 72MHz(max) |
| Mount bus | APB1 |
Time base cell
| register | Function |
|---|---|
| The counter register(TIMx_CNT) | The current value of the counter |
| Predivider register(TIMx_PSC) | Set frequency division coefficient (1-65536) |
| Automatically reload registers(TIMx_ARR) | The counter counts the boundary and the overloaded value |
Timing formula
| parameter | meaning |
|---|---|
| T(s) | Timing time in seconds |
| ARR | Automatically reload the value |
| PSC | Predivision coefficient |
| TIM_CLK | The timer ticks in Hz |
Timing time for the project: 10us
3、Engineering configuration
Project Configuration: Prompt for configuration options during STM32CubeIDE project configuration
3.1、Notes
Omitted project configuration: New project, chip selection, project configuration, SYS for pin configuration, RCC configuration, clock configuration, and project configuration content
The project configuration part, which is not omitted, is the key point to configure in this tutorial.
Please refer to [2. Development environment construction and use: STM32CubeIDE installation and use] to understand how to configure the omitted parts of the project.
3.2、Pin configuration
- Configure the specified pin functionality
You can directly select the corresponding pin number in the pin view, and the corresponding option will appear when the mouse is left clicked

- GPIO

- Timers

- NVIC
The NVIC option allows you to change the priority

- Advanced Settings

- Generate code

4、Main function
This section mainly introduces the functional code written by users. Detailed code can be opened by yourself in the project file we provide, and enter the Bsp folder to view the source code.
Function analysis
The HAL library functions that were covered in the previous tutorial will not be covered
xxxxxxxxxxIf you want to find the HAL library and LL library function analysis involved in the entire tutorial, you can view the documents in the folder [8. STM32 Manual: STM32F1_HAL Library and LL Library_User Manual]
HAL_TIM_PeriodElapsedCallback:The timer update interrupt callback function
| Function prototypes | void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) |
|---|---|
| Functional Description | The timer update interrupt callback function |
| Input parameters | htim:Timer handle address |
| Return value | None |
| Notes | This function is called by HAL_TIM_IRQHandler, which allows you to write specific tasks |
Each time the timer interrupt callback is entered, the timer's pwm_val variable is incremented by 1 and compared against the pwm_set variable in the main loop.
If pwm_val < pwm_set, RGB lights off; If pwm_val > pwm_set, RGB light is on.
Main loop function
In the main loop function, the comparison value of the interrupt callback function is changed by controlling the increment and decrement of the pwm_set variable to achieve different duty cycles per unit time.
xxxxxxxxxxThe above two functions can control the PWM duty cycle of RGB to achieve the gradual effect of light.
5、Experimental phenomenon
After downloading the program successfully, press the RESET button of the development board to observe the phenomenon of the development board
xxxxxxxxxxFor program download, please refer to [2. Development environment construction and use: program download and simulation]
phenomenon:
left and right RGB lights:display the purple color, which goes from bright to dark, and from dark to bright.
