赞
踩
软件版本
硬件
本文将通过PWM波形实现呼吸灯效果
TIMx_ARR
寄存器确定频率、由TIMx_CCRx
寄存器确定占空比的信号。通用定时器产生PWM 的定时器框图如下:(其他定时器框图类似)PWM相关寄存器
包含三个寄存器:捕获/比较模式寄存器
(TIMx_CCMR1/2)、捕获/比较使能寄存器
(TIMx_CCER)、捕获/比较寄存器
(TIMx_CCR1~4)。设置TIMx_CCMRx寄存器OCxPE位以使能相应的预装载寄存器,最后还要设置TIMx_CR1寄存器的ARPE位,(在向上计数或中心对称模式中)使能自动重装载的预装载寄存器。在TIMx_CCMRx寄存器中的OCxM位写入110(PWM模式1)或111
(PWM模式2),能够独立地设置每个OCx输出通道产生一路PWM。
捕获/比较模式寄存器(TIMx_CCMRx)
下图为TIMx_CCMR1
寄存器的各位描述:
这里需要使用的是模式设置位OCxM,总共有两种PWM模式,这两种PWM 模式的区别就是输出电平的极性相反。
这里需要使用的是模式设置位OCxM,总共有两种PWM模式,这两种PWM 模式的区别就是输出电平的极性相反。
捕获/比较使能寄存器(TIMx_CCER)
下图为TIMx_CCER寄存器的各位描述:
该寄存器控制着各个输入输出通道的开关。这里只用到了CC2E位,该位是输入/捕获 2 输出使能位,要想PWM 从 I/O 口输出,这个位必须设置为 1。
捕获/比较寄存器(TIMx_CCRx)
下图为TIMx_CCR1寄存器的各位描述:
在输出模式下,该寄存器的值与 CNT 的值比较,根据比较结果在OC1端口上产生输出信号。利用这点,我们通过修改这个寄存器的值实现控制 PWM 的输出脉宽。
打开外部时钟,点击“System Core”,选择RCC,在右侧弹出的菜单栏中选择“Crystal/Ceramic Resonator”。
选择调试接口,点击“System Core”,选择SYS。,在右侧弹出的菜单栏中选择“Serial Wire”。
配置定时器2。如图,位置1选中定时器2;位置2选择时钟源为“Internal Clock”,通道2选择“PWM Generation CH2”
位置3设置分频系数为71,计数周期为500,其它默认。
位置4设置占空比初始值为10,其实这里不写也没影响。
观察TIM3输出的波形,查表可知,TIM3在PA7,利用逻辑分析仪观察PA7,效果如下:
uint16_t duty_num = 10;
初值设为10.
uint16_t duty_num = 10;
在main函数中添加代码
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);
while函数中添加代码
while(duty_num<=500){
HAL_Delay(50);
duty_num = duty_num + 10;
__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_2,duty_num);
}
while(duty_num>=10){
HAL_Delay(50);
duty_num = duty_num - 10;
__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_2,duty_num);
}
编译运行并烧录,结果如下:
通过本次实验,学习了解了PWM波形,并利用其实现了呼吸灯,在实现过程中,虽然经理很坎坷,但效果还是很好的
参考:
http://www.mcublog.cn/stm32/2021_01/stm32cubemx-pwm-huxideng
https://blog.csdn.net/qq_42992084/article/details/108547321?
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。