STM32CubeMX:PWM-README:2021-08-11

本文详细介绍了如何使用STM32CubeMX配置STM32F103RCT6的TIM1CH1通道产生50%占空比的PWM信号。通过设置时钟树为72MHz,预分频器为71,计数器为999,对比值为499,实现了PWM输出。在代码中,通过HAL库函数启动TIM1通道1的PWM并动态调整占空比,实现占空比从0递增到1000再递减回0的循环,以控制LED亮度变化。
摘要由CSDN通过智能技术生成

STM32CubeMX:PWM-README

pwm,脉冲宽度调制输出,即产生方波信号

频率 = 定时器时钟 / (Prescaler 预分频 + 1)/ (Counter Period 计数值 + 1)Hz

占空比 = Pulse ( 对比值) / (C ounter Period 计数值)%

占空比高就是高电平多,灯越亮

STMF103RCT6只有TIM1CH1通道(PA8)可以用作PWM

选择PA8作为PWN脚:

请添加图片描述

请添加图片描述

时钟树设置为72MKZ
TIM设置:
设置内部时钟,选择TIM1CH1通道,Prescaler 预分频 (72-1),counter(计数值)为(1000-1=999),Pulse ( 对比值)为(500-1=499),占空比为50%:(后面调占空比调的就是Pulse ( 对比值))

请添加图片描述

关键函数:

// 使能timx的通道y,在main里while外
HAL_TIM_PWM_Start(&htimx,TIM_CHANNEL_y);
// 修改timx的通道y的pwm比较值为z,即修改占空比
__HAL_TIM_SET_COMPARE(&htimx, TIM_CHANNEL_y, z);

main里while外:

uint16_t pwmVal=0;   //PWM占空比  
HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1); 使能ti1x的通道1,即开启

while函数里:

 while (1)   
  {
	while( pwmVal < 1000)
	{
		pwmVal++;
		// 修改tim1的通道1的pwm比较值为pwmVal,即修改占空比
		__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, pwmVal);
		HAL_Delay(1);
	}
	while(pwmVal) //到0的时候跳出循环
	{
		pwmVal--;		
		// 修改tim1的通道1的pwm比较值为pwmVal,即修改占空比
		__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, pwmVal);		
		HAL_Delay(1);
	}

    /* USER CODE END WHILE */

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hbzhao@USTC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值