实验目的:
1、用定时器计数方式,控制LED以2s的频率周期性地亮-灭
2、采用定时器pwm模式,让 LED 以呼吸灯方式渐亮渐灭,周期为1~2秒,自己调整到一个满意效果。
一、定时器与PWM简介
1、定时器
定时器是对周期固定的脉冲信号进行计数,如MCU内部的外设时钟(APB)。
定时器就是用来定时的机器,是存在于STM32单片机中的一个外设。其本质就是计数器,只不过 计数器 记录的是STM32的外部情况,所接收的也是外部脉冲,而 定时器 则是由STM32自身提供的一个非常稳定的计数器,这个稳定的计数器就是STM32上连接的晶振部件。
2、PWM简介
脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法。
广泛应用于电机控制、灯光的亮度调节、功率控制等领域。
PWM(Pulse Width ModulaTIon)控制技术就是对脉冲的宽度进行调制的技术,即通过对一系列脉冲的宽度进行调制,来等效的获得所需要的波形(含形状和幅值)。面积等效原理是PWM技术的重要基础理论。一种典型的PWM控制波形SPWM:脉冲的宽度按正弦规律变化。而和正弦波等效的PWM波形称为SPWM波。
脉宽调制(PWM,Pulse Width ModulaTIon)是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。
二、项目实现
1、项目配置
SYS,RCC等的配置就不再赘述
大致如下:
2、实验现象
三、呼吸灯的实现
1、项目配置
2、代码
int main(void)
{
HAL_Init();
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);
MX_GPIO_Init();
MX_TIM2_Init();
MX_USART1_UART_Init();
MX_NVIC_Init();
while (1)
{
while(pwm<500)
{
pwm = pwm + 10;
__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_2,pwm);
HAL_Delay(20);//延时20毫秒
}
while(pwm>0)
{
pwm = pwm - 10;
__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_2,pwm);
HAL_Delay(20);
}
}
/* USER CODE END 3 */
}
3、波形观察
四、心得体会
深入理解:我深入理解了定时器和PWM的工作原理。定时器是一个能够在特定时间间隔后自动触发的设备,而PWM则是一种用于控制信号强度的技术,通过改变脉冲的宽度来调整输出的平均电压。
应用广泛:我发现定时器和PWM的应用非常广泛,不仅在微处理器和微控制器的编程中,而且在许多电子设备和系统中都有应用。例如,PWM被广泛用于调节电机速度、控制照明亮度或者在音频中实现音量的控制