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 (选择有效电平)
扫描二维码关注公众号,回复:
4107841 查看本文章
代码部分
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章