旅游微网站建设,域名网站怎么打开,如何搭建php视频网站,做网站要钱吗?文章代码使用 HAL 库。 文章目录 一、1.PWM原理二、LED 原理图三、使用cubemx 配置 led四、PWM 相关函数五、PWM占空比占空比计算六、PWM 呼吸灯重要代码总结 呼吸灯 一、1.PWM原理
PWM全称为脉冲宽度调制#xff08;Pulse Width Modulation#xff09;#xff0c;是一种常… 文章代码使用 HAL 库。 文章目录 一、1.PWM原理二、LED 原理图三、使用cubemx 配置 led四、PWM 相关函数五、PWM占空比占空比计算六、PWM 呼吸灯重要代码总结 呼吸灯 一、1.PWM原理
PWM全称为脉冲宽度调制Pulse Width Modulation是一种常用的调制技术。它通过改变信号脉冲的宽度来控制电路或装置的输出功率或电压。
在PWM中周期性的方波信号被产生其中脉冲的宽度是可变的而脉冲的频率是固定的。通常PWM信号的周期称为周期时间而脉冲的占空比则是脉冲宽度与周期时间之间的比值。
PWM信号可用于控制电机速度、调节LED的亮度、产生模拟信号等各种应用。通过改变PWM信号的占空比可以在时间上控制输出信号的强度或控制设备的工作时间比。
周期PWM周期Pulse Width Modulation period指的是PWM信号一个完整的周期的时间长度。在PWM信号中周期是指一个完整的脉冲周期包括脉冲的高电平和低电平部分。
计算公式(定时器预分频系数 1) * (重装载值 1) / 时钟主频
占空比
占空比通常用百分比或比例表示可以取值在 0% 到 100% 之间或是 0 到 1 之间。占空比为 0% 表示PWM 信号全为低电平占空比为 100% 表示 PWM 信号全为高电平。一般而言占空比决定了 PWM信号中高电平的时间长度从而控制到达被驱动装置的电源的平均电压水平。
对于直流电机或LED等装置常用 PWM 控制来调节速度或亮度。例如在 50% 的占空比下PWM 信号在一个周期内将有一半的时间为高电平一半的时间为低电平这将导致电机转速或灯光亮度的降低。ARR自动重载寄存器增加占空比将增加高电平时间减小占空比则减小高电平时间。
例子在输出电压为10V的电路中设置PWM占空比为40%那么起始这个电路输出的实际电压是4V。
通常控制LED时只需要给一个高电平就可以控制那么下面是LED电平状态图使用PWM控制LED调节亮度的电平状态图. 二、LED 原理图
可以看到有4个led。 其中 LED2 接到了PB2引脚 LED3 接到了PB1引脚 LED4 接到了PB0引脚所以我们需要配置对应 led 的 gpio 引脚为输出引脚。 三、使用cubemx 配置 led 四、PWM 相关函数
启动定时器PWM模式
HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel);参数 TIM_HandleTypeDef *htim指向 TIM_HandleTypeDef 结构体的指针该结构体包含了定时器的配置和状态信息。 uint32_t Channel指定要启动 PWM 的通道。对于 STM32 定时器而言可以有多个通道每个通道可以独立地生成 PWM 信号。
设置 占空比
__HAL_TIM_SET_COMPARE(__HANDLE__, __CHANNEL__, __COMPARE__);参数 HANDLE是一个宏或变量用于表示特定定时器的句柄。 CHANNEL这是指定要操作的定时器通道。 COMPARE这是要设置的比较值用于比较寄存器的内容。 // 也可以使用 CCRx 比较寄存器设置 占空比。 TIM3-CCR3 200; // 也可以通过htim3.Instance-CCRx直接修改CCR的值 htim3.Instance-CCR3 200; 五、PWM占空比占空比计算
CCR捕获/比较寄存器/ ARR自动重载寄存器 100%*
如果 ARR(自动重载值) 500时当 CCR(比较寄存器值) 100 则 占空比是 20%六、PWM 呼吸灯重要代码
int pwm_value 0; // 占空比// 开启 pwm 输出
HAL_TIM_PWM_Start(htim3, TIM_CHANNEL_3);for(uint16_t i1;i500;i) // 通过循环逐渐改变CCR,进而改变占空比。
{htim3.Instance-CCR3 i; HAL_Delay(1);
}for(uint16_t i499;i1;i--)
{htim3.Instance-CCR3 i; // 通过htim3.Instance-CCRx直接修改CCR的值HAL_Delay(1);
} 总结
下篇文章为大家介绍 无源蜂鸣器唱歌。