STM32H7系列教程(4)脉冲宽度调制(PWM)

文章中若有错误,请在评论区留言,谢谢大家

STM32H7系列教程(4)脉冲宽度调制(PWM)

设置STM32cubeMX

在这里插入图片描述

STM32H750的定时器
在这里插入图片描述CNT(计数器当前值)
ARR(自动重装载值)
PSC(设置预分频系数)

计算公式

Fpwm =Tclk / ((arr+1)*(psc+1))(单位:Hz)
arr 是计数器值
psc 是预分频值

在这里插入图片描述

我的芯片频率设置为Tclk=480MHZ
自动装载值为ARR=999
设置预分频系数PSC=479
pwm频率=480000000/1000*480=1kHz
占空比设置成50%,将获得一个500Hz的频率
在这里插入图片描述

同理,将自动装载值ARR设置成499
pwm频率=480000000/500*480=2kHz
占空比设置成50%,将获得一个1kHz的频率
在这里插入图片描述

  /* USER CODE BEGIN 2 */	
 	HAL_TIM_PWM_Start(&htim12,TIM_CHANNEL_1); //开启PWM对应的通道
  /* USER CODE END 2 */
  /* USER CODE BEGIN WHILE */
  while (1)
  {		
	__HAL_TIM_SetCompare(&htim12, TIM_CHANNEL_1, 250);    //修改占空比
  /* USER CODE END WHILE */
}

点亮PWM呼吸灯

设置的目标频率:2kHz
Fpwm =Tclk / ((arr+1)*(psc+1))
480000000/500/480=2kHz

 /* USER CODE BEGIN PV */
	uint16_t pwmval=0;   //PWM占空比
 /* USER CODE END PV */

 /* USER CODE BEGIN WHILE */
  while (1)
  {
		for(pwmval=0;pwmval<=400;pwmval++)
		{
			__HAL_TIM_SetCompare(&htim12, TIM_CHANNEL_1, pwmval);    //修改占空比
			HAL_Delay(5);		
		}
		
	 	 HAL_Delay(200);
		
		for(pwmval=400;pwmval>0;pwmval--)
		{
			__HAL_TIM_SetCompare(&htim12, TIM_CHANNEL_1, pwmval);    //修改占空比
			HAL_Delay(5);	
		}
		HAL_Delay(200);
			
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

将代码烧录进开发板

可以看到呼吸灯刚开始占空比的频率逐渐增大
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值