您现在的位置:首页 > >

STM32F103ZET6【HAL函开发】STM32CUBEMX------3.1基于定时器的PWM实现呼吸灯效果

发布时间:

用TIM3的通道2对LED0进行呼吸灯的实验。

STM32CUBEMX配置:



硬件连接:
定时器是STM32F103ZET6的内部资源,两个led的硬件连接如下。至于为什么要用TIM3的通道2,因为从上面定时器的引脚分布可以看到,TIM3的通道2对应的刚好是LED0的阴极PB5。所以改变PB5电*大小即可以实现呼吸灯亮暗转换的一个效果。


代码编写:


1.定义高电*时间


uint16_t dutyCycle = 0;

2.开启PWM输出


HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_2);

3.while循环,改变占空比大小,从而改变亮灭的时间


/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */
while (dutyCycle < 1000)
{
dutyCycle ++;
__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, dutyCycle);
HAL_Delay(1);
}
while (dutyCycle)
{
dutyCycle --;
__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, dutyCycle);
HAL_Delay(1);
}
HAL_Delay(200);
}
/* USER CODE END 3 */
}

一一一一一一一一一一一一一一一一一一一一一一一一一
输出固定频率,占空比的PWM
1.频率如何调节,首先给出计算公式:f=定时器频率/(prescaler+1)/(period+1)
从上图中我们可以看到TIM3是APB2下的外设,所以TIM3的频率为72M,我们在STM32CUBEMX里面设置的prescaler为71,设置period为999,所以输出PWM频率应该为f=72000000/72/1000=1000HZ=1KHZ,周期应该是1ms。用示波器测试确实如此。

2.占空比如何调节,需要用如下代码,占空比=duty/(period+1)=40/1000=4%,和上面示波器测试的一致。


__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, 40);


热文推荐
猜你喜欢
友情链接: 团党工作范文 工作范文 表格模版 社科文档网 营销文档资料 工程文档大全