STM32CubeMX學習筆記——STM32H743通用定時器PWM
阿新 • • 發佈:2018-11-17
STM32CubeMX學習筆記——STM32H743通用定時器PWM
Github
https://github.com/HaHaHaHaHaGe/Planof2019_half/tree/master/Course_Project/STM32H7/Class03_PWM
功能簡述
主模式TIM3的開啟兩路PWM對映到PB0、PB1
STM32CubeMX配置
STM32CubeMX版本:4.27.0
配置流程:
Pinout介面選擇並開啟需要的LED控制引腳
Clock Configuration配置時鐘樹
Configuration介面配置System
生成工程
Pinout配置
LED輸出PIN配置TIM3的基本配置
Clock Configuration配置
開啟系統時鐘,TIM3時鐘(APB1)
Configuration
左側主要系統功能的開啟,或中間軟體層功能的開啟(如:RTOS、JPEG解碼器,檔案系統等)
右側是系統及外設模組的具體配置
GPIO
TIM3
週期=((1+TIM_Prescaler )/時鐘)*(1+TIM_Period )
分頻:0
計數模式:向上計數
重灌值:65535
時鐘分割:0 (數字濾波器相關)
自動重灌:開啟
MSM:關閉(開啟將在該定時器使能的同時TRGO發出訊號)
Mode:PWM1模式(PWM的模式選擇)
Pulse:32768(佔空比)
Fast Mode:Disable (開啟快速比較模式)
CH Polarity:Low (選擇有效電平)
程式碼部分
main.c
/* USER CODE BEGIN 1 */
unsigned int i =0,j=65535 ,k=65535;
char flagi = 0,flagj = 0;
/* USER CODE END 1 */
/* USER CODE BEGIN 2 */
HAL_TIM_PWM_Start_IT(&htim3,TIM_CHANNEL_4);
HAL_TIM_PWM_Start_IT(&htim3,TIM_CHANNEL_3);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
if(i == 0)flagi = 1;
if(j == 0)flagj = 1;
if(i == 65535)flagi = 0;
if(j == 65535)flagj = 0;
if(flagi)htim3.Instance->CCR3=i++;
else htim3.Instance->CCR3=i--;
if(flagj)htim3.Instance->CCR4=j++;
else htim3.Instance->CCR4=j--;
k=655;
while(k--);
//HAL_Delay(1);
}
/* USER CODE END 3 */
備註
通用定時器的多種用法在RM0433 第39章