单片机
返回首页

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


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • PIC单片机控制的遥控防盗报警器电路

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 用NE555制作定时器

  • 如何构建一个触摸传感器电路

  • 基于ICL296的大电流开关稳压器电源电路

  • 基于TDA2003的简单低功耗汽车立体声放大器电路

    相关电子头条文章