📌目录
✨项目介绍
说明
项目介绍:通过不使用STM32单片机内部配置PWM输出,直接使用for控制LED亮度或者呼吸灯效果 ,注意我这边使用的是STM32F103 主频为 72MHz!!!
PWM解释
PWM 是脉冲宽度调制(Pulse Width Modulation)的缩写,是一种常用的调节模拟信号的技术。在数字电子中,PWM 通常用于模拟信号的发生和控制。
PWM 通过对信号的脉冲宽度进行调节来实现模拟信号的控制。具体来说,PWM 信号周期性地以固定频率发出脉冲,并且每个脉冲的宽度可以根据需要进行调节。这种调节方式使得 PWM 信号的占空比(脉冲宽度与周期的比值)可以被改变,从而产生不同的平均电压或电流输出。
在实际应用中,PWM 技术被广泛用于控制电机速度、调光LED灯、产生音频信号等领域。例如,通过改变PWM信号的占空比,可以实现对直流电机的转速控制;通过调节LED灯的PWM信号,可以实现对光亮度的调节。
总之,PWM 技术通过控制信号的脉冲宽度来实现模拟信号的控制,是数字电子中常用的一种调节技术。
🏙️实现效果图
预览图
示波器信号图
信号采集图片
🌿项目
代码介绍
直接把这个函数复制进去即可使用,自己调节占空比,频率即可!!!
代码
//占空比调节0-100%,频率调节设置越大,频率就越小
void kaicheng(int time,int frequency) // 开关
{
unsigned int shijian;
unsigned int shijian1;
unsigned int shijian2;
unsigned char X = 0;
while (1)
{
for (shijian = 0; shijian <= frequency; shijian++)
{
shijian2++;
if (shijian2 >= ((time*10)+9))
{
if (X == 0)
shijian1++;
if (X == 1)
shijian1--;
shijian2 = 0;
}
if (shijian1 >= frequency)
{
X++;
if (X > 1)
X = 0;
}
if (shijian < shijian1)
{
LED = 0; //正常配置IO输出即可
}
else
LED = 1;//正常配置IO输出即可
}
}
}
// kaicheng(100,6000); //可以这样使用