STM32学习笔记(5)——GPIO库函数操作

一、 寄存器开发与库函数开发优缺点

库函数:ST公司封装了一些函数,方便用户(程序员)二次开发,提高开发效果。

 

寄存器开发

寄存器优点:

  1. 代码精简,程序执行效果高(运行快)

 

寄存器缺点:

1、开发步骤繁琐,开发效率低。

2、开发难度高,程序维护困难,升级难。

3、程序可移植差。

 

库函数开发

库函数优点:

1、开发步骤相对比较简单,开发效率高。

2、开发难度低,程序维护容易,升级相对简单。

3、程序可移植强。

 

库函数缺点:

  1. 代码相对略多一些,程序执行效果相对寄存器低。

 

ST公司的库函数本质上是对寄存器的操作封闭。

 

 

二、库函数开发LED灯

库函数开发LED灯需要添加的库函数文件:stm32fxx_gpio.c

 

  • 理解LED电路原理

 

LE0连接在PF9。

PF9输出0(低电平),灯亮

PF9输出1(高电平),灯灭

 

 

2、打开GPIOA组时钟,(STM32所有外设时钟都是关闭的)

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);

 

3、初始化GPIO PA0模式(输入)、上/下拉(上拉)

 

GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9;      //引脚9

GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; //输出模式

GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;    //输出推挽

GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;     //上拉

GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //输出速度

 

GPIO_Init(GPIOF, &GPIO_InitStruct);

 

4、通过函数获取引脚电平

uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

 

函数说明:

void RCC_AHB1PeriphClockCmd(uint32_t RCC_AHB1Periph, FunctionalState NewState);

函数功能:使能/不使能AHB1总线外设时钟

uint32_t RCC_AHB1Periph:外设选择

FunctionalState NewState:是否使能

 

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

函数功能:GPIO外设初始化

GPIO_TypeDef* GPIOx:GPIO端口组( A B C D E F G )

GPIO_InitTypeDef* GPIO_InitStruc:GPIO引脚初始化结构

 

typedef struct

{

  uint32_t GPIO_Pin;           //引脚编号  

  GPIOMode_TypeDef GPIO_Mode;   //模式 

  GPIOSpeed_TypeDef GPIO_Speed;   //速度

  GPIOOType_TypeDef GPIO_OType;   //输出类型

  GPIOPuPd_TypeDef GPIO_PuPd;     //上下拉

}GPIO_InitTypeDef;

 

三、库函数开发按键

1、理解按键电路原理

S1按键连接PA0

S1按键未按下,PA0为高电平

S1按键 按下,PA0为低电平

 

2、打开GPIOA组时钟,(STM32所有外设时钟都是关闭的)

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);

 

3、初始化GPIO PA0模式(输入)、上/下拉(上拉)

 

GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_0;     //引脚0

GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN; //输入模式

GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; //上拉

 

GPIO_Init(GPIOA, &GPIO_InitStruct);

 

4、通过函数获取引脚电平

uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

 

函数说明:

 

uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

函数功能:读取某个引脚电平

 

返回值:Bit_SET(高电平)  Bit_RESET(低电平)

GPIO_TypeDef* GPIOx:GPIO端口组( A B C D E F G )

uint16_t GPIO_Pin:引脚

 

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值