**
以STM32为核心制作流水灯
**
文章目录
一、硬件部分
1.IO口选择
使用GPIOB、GPIOC、GPIOD三个端口控制LED灯,在stm32手册中可以查找对应IO口来作为实验输出口。
2其余硬件
除stm32芯片外,还需准备红黄绿三色LED灯若干,导线(杜邦线)若干,面包板一块。
杜邦线:
杜邦线主要用于电路实验,在进行电路实验的时候可以和插针进行连接,而且他具有非常好的牢靠性,也能够省略焊接的过程,快速的进入电路实验,在电子产品的应用中非常广泛。
杜邦线在网上搜索有很多,可根据自己实验要求购买不同杜邦线。
此外,接线时尽量避免用杜邦线串联,可能接触不良或过程中松动。可用一根杜邦线,长度不够时可通过面包板卡槽连接两根杜邦线。
面包板:
面包板是由于板子上有很多小插孔,专为电子电路的无焊接实验设计制造的。由于各种电子元器件可根据需要随意插入或拔出,免去了焊接,节省了电路的组装时间,而且元件可以重复使用,所以非常适合电子电路的组装、调试和训练。
面包板使用教程可在网上搜索,也可在网上购买后向商家询问。
3.连线
连线方面,LED灯短脚连接IO口,长脚连接电源口(注:不要连接5v端口,5v端口没有电阻保护,容易烧坏LED灯)
在连线过程中可以借助面包板辅助连线。
二、软件部分
创立工程文件,编写代码后编译生成hex文件。
2.1寄存器配置
通过配置寄存器的值改变IO的值进行变化。
led.h
#ifndef __LED_H
#define __LED_H
#include "sys.h"
//LED端口定义
#define LED0 BIT_ADDR(GPIOB_ODR_Addr,6) // PB6输出
#define LED1 BIT_ADDR(GPIOC_ODR_Addr,6) // PC6输出
#define LED2 BIT_ADDR(GPIOD_ODR_Addr,2) // PD2输出
void LED_Init(void); //初始化
#endif
led.c
#include "sys.h"
#include "led.h"
//初始化PB6、PC6和PD2为输出口,并使能这3个口的时钟
//LEDIO初始化
void LED_Init(void)
{
RCC->APB2ENR|=1<<3; //使能PORTB时钟
RCC->APB2ENR|=1<<4; //使能PORTC时钟
RCC->APB2ENR|=1<<5; //使能PORTD时钟
GPIOB->CRL&=0XF0FFFFFF; //PB6清零
GPIOB->CRL|=0X03000000; //PB6推挽输出
GPIOB->ODR|=1<<6; //PB6输出高
GPIOC->CRL&=0XF0FFFFFF; //PC6清零
GPIOC->CRL|=0X03000000; //PC6推挽输出
GPIOC->ODR|=1<<6;