目录
本文主要记录使用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 对应总线:查找时钟:
频率计算公式:
根据图上配置,可以知道当前频率为:
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 对应的时钟频率:
频率计算公式:
根据图上配置,可以知道当前频率为:
高电平时间:
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
后边烧录啥的就省略了...