STM32流水灯(基于库函数)
2019-10-21 来源:eefocus
硬件连接
参考原理图,会看原理图,使用搜索功能[A1] ,知道标号作用[A2] ,流水灯原理[A3] 。
战舰版本 LED0=PB5 LED1=PE5
迷你版本 LED0=PA8 LED1=PD2
RCT6版本 LED1=PA7 LED2=PA6 LED3=PA5 LED4=PA4
GPIO库函数
初始化函数 1个初始化函数 :
void GPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypedef*GPIO_InitStruct);
两个读取输入电平函数:
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef*GPIOx,uint16_t GPIO_Pin);
uint16_t GPIO_ReadInputData(GPIO_TypeDef*GPIOx);
两个读取输出电平函数:
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef*GPIOx,uint16_t GPIO_Pin);
uint16_t GPIO_ReadOutputData(GPIO_TypeDef*GPIOx);
四个设置输出电平函数:
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
操作过程
复制或者是新建一个工程模板到一个地方,然后新建一个hardware,并且在复制的工程中也新建一个hardware,然后在hardware里面建立一些子文件夹,并在LED下面建立LED.C和LED.H。
LED.C程序代码书写
#include 'led.h'
//初始化 PB5 和 PE5 为输出口.并使能这两个口的时钟
//LED IO 初始化
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|
RCC_APB2Periph_GPIOE, ENABLE); //使能 PB,PE 端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5 推挽输出
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_SetBits(GPIOB,GPIO_Pin_5); //PB.5 输出高
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED1-->PE.5 推挽输出
GPIO_Init(GPIOE, &GPIO_InitStructure);
GPIO_SetBits(GPIOE,GPIO_Pin_5);/ /PE.5 输出高
}
该代码里面就包含了一个函数 void LED_Init(void),该函数的功能就是用来实现配置 PB5和 PE5 为推挽输出。 这里需要注意的是: 在配置 STM32 外设的时候,任何时候都要先使能该外设的时钟。 GPIO 是挂载在 APB2 总线上的外设, 在固件库中对挂载在 APB2 总线上的外设时钟使能是通过函数 RCC_APB2PeriphClockCmd()来实现的。
LED.h程序代码书写
#ifndef __LED_H
#define __LED_H
#include 'sys.h'
//LED 端口定义
#define LED0 PBout(5)// DS0
#define LED1 PEout(5)// DS1
void LED_Init(void);//初始化
#endif
PS:务必搞清楚GPIO模式,否则这里写不出来函数也看不懂
————————————————
版权声明:本文为CSDN博主「qq_41546863」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41546863/article/details/95218672