STM32F1\F4\H7 CubeMx 定时器配置

发布于:2025-06-19 ⋅ 阅读:(15) ⋅ 点赞:(0)

目录

1 定时器使用

1.1 CubeMX 配置

1.1.1 创建工程

1.1.2 时钟配置

1.1.3 定时器配置

1.1.4 GPIO 配置

1.1.5 工程管理

1.2 keil5 配置

1.2.1 添加代码

1.2.2 修改配置

1.2.3 下载程序

2 PWM使用

2.1 CubeMX 配置

2.1.1 PWM 配置

2.1.2 周期\频率计算方法

2.2 keil5 配置

2.2.1 添加代码


本文主要记录使用CubeMx配置STM32H750ZB 定时器配置过程,以及使用PWM功能。

STM32F1\F4 基本是一致的。

1 定时器使用

1.1 CubeMX 配置

1.1.1 创建工程

选择型号,开始工程

1.1.2 时钟配置

这里想要配置 STM32H750ZBT6最高频率,想要选择 Power Regulator Voltage Scale 0,之后还需要支持 rev.V(可以去网上查查为什么)

1.1.3 定时器配置

参数简介:

  • Prescaler(预分频系数):即PSC寄存器值
  • Counter Mode (计数方向): 向上计数
  • Counter Period (计数周期): 即ARR寄存器值,多少个计数脉冲作为1个波形周期
  • auto-reload preload (自动重载值的预装载): 当改变周期值ARR时,是否等到下一个更新事件再写入数值,使得数值的更改不影响执行中的波形

TIM2 对应总线:查找时钟:

频率计算公式:

F = \frac{TimerClock}{(Prescaler+1)(CounterPeriod+1)}

根据图上配置,可以知道当前频率为:

F = \frac{240MHZ}{(80-1+1)(5000-1+1)}=600HZ

1.1.4 GPIO 配置

PG0 引脚

1.1.5 工程管理

这里工程名字我就不改了

1.2 keil5 配置

1.2.1 添加代码

串口打印代码可以参考 STM32F1\F4\H7 CubeMx 串口一配置_stm32cubemx h750-CSDN博客

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
uint32_t pwm_count=0;
/* USER CODE END 0 */


/* USER CODE BEGIN 2 */
// enable timer
	HAL_TIM_Base_Start_IT(&htim2);    // 启动定时2
/* USER CODE END 2 */


/* USER CODE BEGIN 4 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) 
{
	if(htim->Instance == TIM2)
	{
		/* 。。。 */
		pwm_count++;
		if(pwm_count<8)
		{
			HAL_GPIO_WritePin(GPIOG, GPIO_PIN_0, GPIO_PIN_SET);
		}else{
			HAL_GPIO_WritePin(GPIOG, GPIO_PIN_0, GPIO_PIN_RESET);
		}
		if(pwm_count==10)
		{
			pwm_count=0;
		}
//		printf("I'm timer2\r\n"); /* 插入换行 */
	}
};

/* USER CODE BEGIN 4 */

1.2.2 修改配置

如果有printf 重映射,勾选 MicroLIB

1.2.3 下载程序

这里使用jlink,下边是缺少有关STM32H750ZB相关的软件,搜索下,安装下即可。

(如果搜索不到,可以考虑升级keil版本)

2 PWM使用

2.1 CubeMX 配置

2.1.1 PWM 配置

这里选择 TIM4 的通道四,对应引脚 PB9;

2.1.2 周期\频率计算方法

查看 TIM4 对应的时钟频率:

频率计算公式:

F = \frac{TimerClock}{(Prescaler+1)(CounterPeriod+1)}

根据图上配置,可以知道当前频率为:

F = \frac{240MHZ}{(240-1+1)(50000-1+1)}=20HZ

高电平时间:

T = \frac{40000}{50000}*\frac{1000ms}{20HZ} =40ms

2.2 keil5 配置

2.2.1 添加代码

HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_4); //开启PWM对应的通道


uint16_t pwmval=30000;   //PWM占空比 
__HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_4, pwmval);    // 修改占空比 tim4

后边烧录啥的就省略了...


网站公告

今日签到

点亮在社区的每一天
去签到