现在,我们将 LED 与通用 STM8S连接,该单片机对 PWM 旗子暗记进行掌握,从而掌握LED的亮度。
理解 PWM 旗子暗记的根本你可能听说过,PWM 代表脉冲宽度调制。它是一种仿照调制技能,广泛运用于不同的运用和项目。PWM 旗子暗记的图像如下所示。
在上面看到的图像是具有相同ON Time和OFF Time的通用方波。现在,假设方波的周期为 1 秒,这意味着方波的ON Time和OFF Time都是 500 毫秒。

因此,如果我们连接一个 LED 并按这个方波频率给它加电,LED 将在半个周期内亮起,在半个周期内熄灭。这样看起来 LED 以一半亮度发光,即LED均匀电压只有输入的1/2。
在上图中,您可以看到我们降落了占空比,如果我们考虑相同的 1S 周期,我们的 On-Time 为 250ms,OFF -Time为 750ms。现在,如果我们连接相同的 LED,我们会不雅观察到 LED 会由于占空比降落而变得更暗。
STM8S PWM LED电路由于我们利用 PWM 掌握 LED,因此须要一个 LED 与 STM8S 板连接、以及ST-LINK编程器。除此之外,我们须要一个 5V 电源为开拓板供电,由于开拓板有一个板载 micro USB 电缆,这里利用它为开拓板供电。
基于STM8S的LED调光器电路图为了对电路进行编程,我们将ST-Link V2 编程器连接到 STM8S 开拓板的 3.3V、SWIM 和接地引脚。STM8 单片机有一个很有趣的地方,它只须要一个SWIM 引脚即可对其进行编程。
正如您在上面的示意图中看到的,测试 LED 连接到开拓板上。
ST Micro STM8S 微掌握器上的 PWM 引脚STM8S 有 20 个引脚,个中 8 个引脚可以配置为 PWM。下图赤色方框中标记的为STM8S具有 PWM 功能的引脚。这些引脚为功能复用引脚,也可用于其他功能。
正如我们在上图中看到的,标记的引脚可以输出PWM 旗子暗记。以是我们将利用个中一个来输出 PWM 旗子暗记。但是,启用 PWM 会禁用其他功能,因此在实际运用中我们须要小心选择将哪个引脚配置为 PWM。由于我们只是大略的构建电路进行演示,没有其他顾虑,这里选择利用 PIN D4 输出 PWM 旗子暗记。
对 STM8s 微掌握器进行编程天生 PWM 旗子暗记#include "STM8S.h"signed int pwm_duty = 0;void delay_ms (int ms) //延时函数{ for (int i=0; i<=ms; i++) for (int j=0; j<120; j++) // Nop = Fosc/4 _asm("nop");}void main(void){ GPIO_DeInit(GPIOD); TIM2_DeInit(); GPIO_Init(GPIOD,GPIO_PIN_4,GPIO_MODE_OUT_PP_HIGH_FAST); //设置 Timer2 TIM2_OC1Init(TIM2_OCMODE_PWM1, TIM2_OUTPUTSTATE_ENABLE, 1000, TIM2_OCPOLARITY_HIGH); TIM2_TimeBaseInit(TIM2_PRESCALER_1, 500);//2MHz实现 4KHz 的 PWM 频率 TIM2_Cmd(ENABLE);//启用Timer2定时器 while(TRUE){ for(pwm_duty = 0; pwm_duty < 1000; pwm_duty += 2){ TIM2_SetCompare1(pwm_duty); delay_ms(10); //延时10ms } for(pwm_duty = 1000; pwm_duty > 0; pwm_duty -= 2){ TIM2_SetCompare1(pwm_duty); delay_ms(10); } }}