STM32流水灯(基于库函数)

  • 硬件连接

参考原理图,会看原理图使用搜索功能[A1] 知道标号作用[A2] ,流水灯原理[A3] 

  1. 战舰版本        LED0=PB5     LED1=PE5
  2. 迷你版本        LED0=PA8    LED1=PD2
  3. RCT6版本      LED1=PA7    LED2=PA6    LED3=PA5    LED4=PA4
  • GPIO库函数
  1. 初始化函数 1个初始化函数 :

void GPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypedef*GPIO_InitStruct);

  1. 两个读取输入电平函数:

uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef*GPIOx,uint16_t GPIO_Pin);

uint16_t GPIO_ReadInputData(GPIO_TypeDef*GPIOx);

  1. 两个读取输出电平函数:

uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef*GPIOx,uint16_t GPIO_Pin);

uint16_t GPIO_ReadOutputData(GPIO_TypeDef*GPIOx);

  1. 四个设置输出电平函数:

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);

  • 操作过程
  1. 复制或者是新建一个工程模板到一个地方,然后新建一个hardware,并且在复制的工程中也新建一个hardware,然后在hardware里面建立一些子文件夹,并在LED下面建立LED.C和LED.H。

 

  1. 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()来实现的。

  1. 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模式,否则这里写不出来函数也看不懂


 [A1]

福昕阅读器按Ctrl+F或者是单击右上角的搜索然后输入关键字就可以搜索原理图相同标号。

 [A2]标号表示具有相同的电气连接特性。

 [A3]IO口输出电平,LED灯亮灭利用的是二极管的单向导电性和光敏性。

你可能感兴趣的:(STM32)