新浪博客

7.8. 怎么实现流水灯功能-STM32(初学宝典)神舟IV号开发板

2014-09-23 13:26阅读:

7.8.1 实验说明

继续深入学习,这次实验搭建多个LED灯。普通的LED灯的工作电流在10~30mA众之间,如果低于这个值,有可能灯会不亮;如果超过这个值,灯可能会被烧坏,所以严格來讲,这里需要加一个合适的限流电阻,所以在这个电路中每个灯上都串联了1只470Ω的电阻,这是为了保护LED不被过高的电流烧坏而设计的。
电阻值计算公式是R=(Vcc-Va)/I,其中Vcc为电源电压,Va为LED正向驱动电压,I为LED正向工作电流,假定我们所用的正向驱动电压2V、工作电流希望保持10mA、则R=(5V-2V)/0.01A=300Ω,接近470Ω;一定需要接限流电阻吗?是的,不用限流电阻是不对的,因为不接限流电阻时,LED和单片机都承受着较高的电流,短时间没有问题,你有没有注意到如果不接限流电阻的话LED亮度过高呢?但如果长时间点亮,将有可能烧坏单片机,或者不烧坏也会减短单片机芯片的使用寿命。

7.8.2 实验原理图

自己搭建的流水灯,每个STM32的芯片管脚连接一个LED灯,每个LED灯连接一个470欧的电阻,详细的原理图如下图所示
7.8. <wbr>怎么实现流水灯功能-STM32(初学宝典)神舟IV号开发板


STM32流水灯电路原理图

7.8.3 器件清单

品名
型号
位号
数量
备注
LED点灯电路
0805贴片电阻
470欧姆
R46
1

0805 LED灯
绿色LED灯
LED1
1

0805贴片电阻
470欧姆
R47
1

0805 LED灯
绿色LED灯
LED2
1

0805贴片电阻
470欧姆
R48
1

0805 LED灯
绿色LED灯
LED3
1

0805贴片电阻
470欧姆
R49
1

0805 LED灯
绿色LED灯
LED4
1


7.8.4 程序下载

使用JLINK将编译好的HEX文件下载下去。

7.8.5 代码分析

int main(void) //main是程序入口
{
RCC->APB2ENR |= RCC_APB2Periph_GPIOD;
GPIOA->CRL &= 0x0FF000FF;
GPIOA->CRL |= 0x30033300;
while (1)
{
GPIOD->BSRR = GPIO_Pin_2;
Delay(0x5FFFF);
GPIOD->BSRR = GPIO_Pin_3;
Delay(0x5FFFF);
GPIOD->BSRR = GPIO_Pin_4;
Delay(0x5FFFF);
GPIOD->BSRR = GPIO_Pin_7;
Delay(0x5FFFF);

GPIOD->BRR = GPIO_Pin_2;
Delay(0x5FFFF);
GPIOD->BRR = GPIO_Pin_3;
Delay(0x5FFFF);
GPIOD->BRR = GPIO_Pin_4;
Delay(0x5FFFF);
GPIOD->BRR = GPIO_Pin_7;
Delay(0x5FFFF);
}
}
程序主要设计思路就是先将所有LED灯逐个经过延时后熄灭,然后再逐个被点亮,如此循环,形成LED流水灯。


7.8.6 实验现象
7.8. <wbr>怎么实现流水灯功能-STM32(初学宝典)神舟IV号开发板

下载代码,并且按下【复位】键,在神舟IV号板上找到LED1LED2LED3LED4三个灯,可以看到这四个灯轮流闪烁,流水灯。

我的更多文章

下载客户端阅读体验更佳

APP专享