天天看點

STM32CubeMX學習筆記——STM32H743通用定時器Github功能簡述STM32CubeMX配置代碼部分備注

STM32CubeMX學習筆記——STM32H743通用定時器

  • Github
  • 功能簡述
  • STM32CubeMX配置
    • Pinout配置
    • Clock Configuration配置
    • Configuration
      • GPIO
      • TIM3
      • TIM2
      • NVIC
  • 代碼部分
    • main.c
    • stm32h7xx_it.c
  • 備注

Github

https://github.com/HaHaHaHaHaGe/Planof2019_half/tree/master/Course_Project/STM32H7/Class03_TIMER

功能簡述

主模式TIM2的中斷作為從模式TIM3的時鐘輸入

(級聯定時器)

紅燈亮6滅5 頻率1hz

綠燈亮3滅3 頻率0.5hz

STM32CubeMX配置

STM32CubeMX版本:4.27.0

配置流程:

Pinout界面選擇并開啟需要的LED控制引腳

Clock Configuration配置時鐘樹

Configuration界面配置System

生成工程

Pinout配置

STM32CubeMX學習筆記——STM32H743通用定時器Github功能簡述STM32CubeMX配置代碼部分備注

LED輸出PIN配置,TIM2,TIM3的基本配置

Clock Configuration配置

STM32CubeMX學習筆記——STM32H743通用定時器Github功能簡述STM32CubeMX配置代碼部分備注

開啟系統時鐘,設定TIM2、TIM3時鐘(APB1)

Configuration

STM32CubeMX學習筆記——STM32H743通用定時器Github功能簡述STM32CubeMX配置代碼部分備注

左側主要系統功能的開啟,或中間軟體層功能的開啟(如:RTOS、JPEG解碼器,檔案系統等)

右側是系統及外設子產品的具體配置

GPIO

STM32CubeMX學習筆記——STM32H743通用定時器Github功能簡述STM32CubeMX配置代碼部分備注

輸出配置

TIM3

STM32CubeMX學習筆記——STM32H743通用定時器Github功能簡述STM32CubeMX配置代碼部分備注

周期=((1+TIM_Prescaler )/時鐘)*(1+TIM_Period )

分頻:62499

計數模式:向上計數

重裝值:99

時鐘分割:0 (數字濾波器相關)

自動重裝:開啟

MSM:關閉(開啟将在該定時器使能的同時TRGO發出信号)

觸發事件選擇:更新

STM32CubeMX學習筆記——STM32H743通用定時器Github功能簡述STM32CubeMX配置代碼部分備注
STM32CubeMX學習筆記——STM32H743通用定時器Github功能簡述STM32CubeMX配置代碼部分備注

TIM2

STM32CubeMX學習筆記——STM32H743通用定時器Github功能簡述STM32CubeMX配置代碼部分備注

周期=((1+TIM_Prescaler )/時鐘)*(1+TIM_Period )

分頻:0

計數模式:向上計數

重裝值:1

時鐘分割:0 (數字濾波器相關)

自動重裝:開啟

由于TIM2作為從定時器,它的時鐘實際是TIM3的中斷信号

STM32CubeMX學習筆記——STM32H743通用定時器Github功能簡述STM32CubeMX配置代碼部分備注

NVIC

STM32CubeMX學習筆記——STM32H743通用定時器Github功能簡述STM32CubeMX配置代碼部分備注
STM32CubeMX學習筆記——STM32H743通用定時器Github功能簡述STM32CubeMX配置代碼部分備注

代碼部分

main.c

/* USER CODE BEGIN 2 */
	HAL_TIM_Base_Start_IT(&htim3);
	HAL_TIM_Base_Start_IT(&htim2);
  /* USER CODE END 2 */
/* USER CODE BEGIN WHILE */
  while (1)
  {

  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */
		HAL_Delay(10000);
		HAL_TIM_Base_DeInit(&htim3);
		
  }
  /* USER CODE END 3 */
           

stm32h7xx_it.c

/* USER CODE BEGIN 1 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	if(htim->Instance == TIM2)
		HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_0);
	if(htim->Instance == TIM3)
		HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);
}
/* USER CODE END 1 */

           

備注

通用定時器的多種用法在RM0433 第39章

繼續閱讀