一、硬件接法(上拉+下拉)
双色LED:红、绿两颗独立LED,同一个GPIO引脚,同时挂这两颗LED。
LED1(红):阳极接VCC,阴极接单片机GPIO(上拉接法,GPIO拉低点亮)
LED2(绿):阳极接单片机GPIO,阴极接GND(下拉接法,GPIO拉高点亮)
接线拓扑
VCC
|
R1(220Ω)
|
LED1(红) 阳极→阴极
|
↓
GPIO PA0
↑
|
LED2(绿) 阳极←阴极
|
R2(220Ω)
|
GND
二、三种状态逻辑
GPIO 低电平:红灯亮、绿灯灭
GPIO 高电平:绿灯亮、红灯灭
GPIO 高速高低翻转(高频PWM/分时闪烁):红、绿快速交替人眼视觉残留,混出黄色/橙色第三种颜色
三、关键要点
频率不用太高
只要超过 50Hz 人眼就看不出闪烁,用 100~500Hz 分时切换就足够混色。
可以调混色比例
高电平时间长偏绿,低电平时间长偏红,占空比可调出不同中间色。
限流电阻必须加
两颗LED各自串限流电阻(220Ω~1kΩ),不然会灌电流过大烧IO口或LED。
IO驱动能力够用
普通单片机GPIO推挽输出,灌/拉电流足够驱动普通直插LED,完全没问题。
四、优缺点
✅ 优点:只占用1个GPIO,省引脚,极简电路
❌ 缺点:不能单独无级精细调光,只能靠分时比例混色;不能同时恒定亮两种纯色。
五、最简代码思路
while(1)
{
GPIO_Low(); // 红灯
delay_us(500);
GPIO_High(); // 绿灯
delay_us(500);
}
改两个延时值,就能调出偏红、偏绿、标准黄色。