STM32 GPIO库函数全面解析
目录
一、标准库的介绍
库函数的基本概念
二、初始化和复位函数
三、数据读取
1、输入读取
2、输出读取
四、数据写入
五、配置和锁定
六、复用和事件输出
七、特殊功能配置
一、标准库的介绍
库函数(Library Functions)是预先编写好的代码片段或模块,旨在简化和加速软件开发过程。它们通常封装了常见的操作和功能,使得开发者可以通过调用这些函数来实现复杂的功能,而无需从头开始编写所有代码。下面我将简要介绍库函数的概念、分类及其在嵌入式开发中的应用,特别是针对STM32微控制器的库函数。
库函数的基本概念
-
定义:库函数是一组预编写的函数,用于执行特定的任务。它们被组织成库(Library),开发者可以在自己的项目中引用这些库并调用其中的函数。
-
优势:
- 提高开发效率:通过使用库函数,开发者可以避免重复造轮子,快速实现功能。
- 提高代码质量:库函数通常经过充分测试和优化,使用它们可以减少错误并提高代码的可靠性。
- 易于维护:如果库函数中有更新或修复,只需更新库本身,而不需要修改每个使用该库的项目。
二、初始化和复位函数
这些函数用于初始化、复位和配置GPIO端口及其引脚。
void GPIO_DeInit(GPIO_TypeDef* GPIOx);
void GPIO_AFIODeInit(void);
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);
三、数据读取
这里要加入一个前面写忘的知识点:GPIO_InitStructure.GPIO_Speed这个是GPIO的输出速度,在输入的情况下,这个参数是没有用的。
这些函数用于读取GPIO端口或特定引脚的输入输出数据。
1、输入读取
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
2、输出读取
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
GPIO_ReadOutputDataBit读取这个输出寄存器中的某一位
uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
总结来说就是末尾带Bit的只是读取GPIOx(x可以是A~G)中的某一个引脚的内容,如GPIOA0,GPIOB2这样一个引脚的数据。而不带Bit结尾的可以将这一类的所有引脚的数据都读取出来,如GPIOA,就是将GPIOA中0~15号引脚的数据都读取出来了。
四、数据写入
这些函数用于设置或清除GPIO端口的引脚状态,或者直接写入整个端口的数据。
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);
五、配置和锁定
这个函数用于配置GPIO端口的特殊功能和锁定引脚配置。
void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
六、复用和事件输出
这些函数用于配置GPIO端口的复用功能和事件输出。
void GPIO_EventOutputConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);
void GPIO_EventOutputCmd(FunctionalState NewState);
void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState);
void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);
七、特殊功能配置
这个函数用于配置一些特殊的GPIO功能,如以太网媒体接口。需要开发板有以太网的功能。
void GPIO_ETH_MediaInterfaceConfig(uint32_t GPIO_ETH_MediaInterface);
作者:六六六六六6666