STM32入坑教程(三)led流水灯
2020-07-14 06:35
369 查看
硬件资源
LED灯
STM32开发板
线缆
LED驱动电路
LED灯的驱动
图中T1是NPN型三极管,R2是LED限流电阻,R1是基极电阻,J1是控制信号,原理如下:
J1高电平,三极管导通,LED亮;
J1低电平,三极管截止,LED灭;
图中T2是PNP型三极管,R3是LED限流电阻,R4是基极电阻,J2是控制信号,原理如下:
J2高电平,三极管截止,LED灭;
J2低电平,三极管导通,LED亮;
可以按照以上介绍,配置LED等的硬件驱动电路。虽然不用驱动有时也可以,但是如果灯的数量过多,负载过大,就有可能烧坏单片机的GPIO口,得不偿失。况且对于学习单片机来说,搭硬件电路是必备技能。
流水灯原理
顾名思义,就是让灯轮流的点亮熄灭,有一种流水的效果。所以其原理就是对灯的亮灭控制,但是需要有顺序了。程序中是实现8个小灯轮流点亮写灭:LED1亮灭->LED2亮灭->LED3亮灭…
对应于单片机,就是控制引脚,使其输出高低电平。
程序中使用的引脚:PB8-11
配置方法及程序
- 配置GPIO引脚
void LED_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //使能PB端口时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz GPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定参数初始化 GPIO_SetBits(GPIOB,GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11);// 输出高 }
- 编写流水灯函数,注意需要有延时
void LED_Light(void) { GPIO_ResetBits(GPIOB,GPIO_Pin_8); delay_ms(1000); GPIO_SetBits(GPIOB,GPIO_Pin_8); GPIO_ResetBits(GPIOB,GPIO_Pin_9); delay_ms(1000); GPIO_SetBits(GPIOB,GPIO_Pin_9); GPIO_ResetBits(GPIOB,GPIO_Pin_10); delay_ms(1000); GPIO_SetBits(GPIOB,GPIO_Pin_10); GPIO_ResetBits(GPIOB,GPIO_Pin_11); delay_ms(1000); GPIO_SetBits(GPIOB,GPIO_Pin_11); }
- led.h文件中声明上述函数
- main文件中包含需调用的头文件
- 主函数中初始化led和delay
- 在while中调用编写的流水灯函数
#include "stm32f10x.h" #include "led.h" #include "delay.h" int main(void) { LED_Init(); delay_init(); while(1) { LED_Light(); } }
**
特别注意:
流水灯函数中的延时用在不同的板子上时间可能会不同,具体根据实际情况来。实际延时时间劲量大于200ms,如果延时时间太少就有可能看不到灯亮或者灯比较暗。
**
程序已经调试验证,流水灯可正常运行
最后,怎么可能没有资源呢?附上传送门:
https://download.csdn.net/download/m0_46195580/12503307
什么,1个积分也没有,这里还有个传送门:
链接:https://pan.baidu.com/s/1iJGNiRO8U_gxG2zN8VItKQ
提取码:vhah
相关文章推荐
- STM32程序编写基本流程(LED流水灯)
- 【STM32】HAL库STM32CubeMX+True Studio系列教程(一)——GPIO配置LED灯
- 用Keil-MDK开发TQ2440裸机程序入门教程——LED流水灯实现
- STM32学习笔记1——LED流水灯
- STM32——流水LED灯
- Exynos4412裸机开发系列教程--LED流水灯
- 用Keil-MDK开发TQ2440裸机程序入门教程——LED流水灯实现
- 用Keil-MDK开发TQ2440裸机程序入门教程——LED流水灯实现
- 用Keil-MDK开发TQ2440裸机程序入门教程——LED流水灯实现
- 嵌入式stm32学习之路——第一弹(led流水灯工程)
- stm32 LED 流水灯剖析(库函数版)
- stm32-点亮led,流水灯
- 最简单的STM32入门教程----闪烁LED
- 基于STM32CT117E竞赛板(STM32f103RB)按键控制LED流水灯
- 4、Proteus仿真STM32串口通信,发送数据控制LED流水灯的启动和停止
- stm32 TouchGFX基础教程(十四)触控点亮LED
- 1.STM32中对LED_GPIO_Config()函数的理解(自定义)之流水灯
- 2、Proteus仿真STM32外部EXTI中断、按键中断控制led流水灯的亮灭。
- STM32PWM输出实现LED灯渐亮渐灭
- STM32定时器程序(一个LED闪烁)