STM32库函数中GPIO库的使用

使用步骤:

1,首先需要在使用之前需要引用GPIO的头文件,头文件在stm32f10x_conf.h中去掉注释的方式打开;
2,然后打开GPIO的时钟,打开的方法:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD, ENABLE);//打开GPIOC和GPIOD的时钟

3,用定义结构体的方法初始化GPIO的设置

GPIO_InitTypeDef GPIO_InitStructure;     //定义结构体
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //开时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;	           //端口号
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;         //模式配置
GPIO_Init(GPIOC, &GPIO_InitStructure);					      //初始化库函数
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;	           //端口号
GPIO_Init(GPIOD, &GPIO_InitStructure);					      //初始化库函数

GPIO端口模式介绍

(1)GPIO_Mode_AIN 模拟输入
(2)GPIO_Mode_IN_FLOATING 浮空输入
(3)GPIO_Mode_IPD 下拉输入
(4)GPIO_Mode_IPU 上拉输入
(5)GPIO_Mode_Out_OD 开漏输出//外部电路没有上拉电阻,只能提供低电平,有较好的电流吸纳能力,
(6)GPIO_Mode_Out_PP 推挽输出 //理解成推拉式输出,提高电路负载能力,也提高了开关的速率
(7)GPIO_Mode_AF_OD 复用开漏输出
(8)GPIO_Mode_AF_PP 复用推挽输出

1,推挽输出:最常用的一种输出模式,能输出高低电平,推拉式输出原理,提高了电路的负载能力,也提高了开关的工作速度;
2,开漏输出:外部电路没有上拉电阻时,只能提供低电平,有较好的电流吸纳能力;使用时需要根据情况选择上拉电阻值和电源来达到和外接设备的电平匹配;
3,复用功能的推挽输出_AF_PP ——片内外设功能(I2C的SCL,SDA) 
4,复用功能的开漏输出_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS)
(注,https://wenku.baidu.com/view/2f7b3630844769eae009ede1.html作者写得比较详细)

GPIO库函数的介绍

1,void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);//使用最多的初始化函数
2,void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);//初始化一个用于初始化GPIO的结构体,看下函数实现就清楚了

3,uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//读取某个GPIO引脚的输入值
4,uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);//读取某组GPIO引脚的输入值

5,uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//读取某个GPIO引脚的输出值
6,uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);//读取某组GPIO引脚的输出值

7,void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//指定的引脚置1
8,void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//指定的引脚清0

9,void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);//设置指定引脚的数据值
10,void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);//设置指定端口的数据值

11,void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//锁定GPIO口的设置,一旦设置好不让修改,

12,12void GPIO_EventOutputConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);//选择GPIO引脚作为事件输出
13,void GPIO_EventOutputCmd(FunctionalState NewState);//允许或禁止事件输出
14,void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);//外设端口作为中断线号输入

15,void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState);//改变指定管脚的映射,很多复用功能的引出脚可以通过软件重映射改变;
16,void GPIO_DeInit(GPIO_TypeDef* GPIOx);,//复位所有引脚
17,void GPIO_AFIODeInit(void);//取消所有引脚的复用功能设置
(总结到位的博主链接:https://blog.csdn.net/zc1107473010/article/details/45165711)

你可能感兴趣的:(STM32)