这段时间开始野火的学习STM32f130指南者开发板,入门篇看完,觉得相对于51单片机来说,stm32还是要难很多的,昨晚仔细看了一下stm32官方给的gpio例程,今天分享一下昨天的收获。
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);
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);
void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
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);
void GPIO_ETH_MediaInterfaceConfig(uint32_t GPIO_ETH_MediaInterface);
下面来简述一下对于这些库函数的理解
1.void GPIO_DeInit(GPIO_TypeDef GPIOx)*
这个函数的功能是:将GPIO外围寄存器取消初始化为上电时的重置值,也就是把寄存器设置为上电时的初始值。参数值GPIOx: x=(A~G);
2.void GPIO_AFIODeInit(void)
这个函数的功能是:即功能复用,重新映射事件控制。
3.void GPIO_Init(GPIO_TypeDef GPIOx, GPIO_InitTypeDef GPIO_InitStruct)**
这是初始化GPIO函数:根据gpio initstruct中的指定参数初始化gpio外围设备。这里涉及到的函数参数都是指针,在调用函数输入形参时,需要加取地址符号“&”。
4.void GPIO_StructInit(GPIO_InitTypeDef GPIO_InitStruct)*
函数功能是:用其默认值填充每个gpio initstruct成员。也就是初始化结构体成员。其成员有:GPIO_Pin(gpiox) GPIO_Speed(输出速度) GPIO_Mode(输入或者输出的模式)
5.uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef GPIOx, uint16_t GPIO_Pin)*
函数功能是:读取指定的输入端口的引脚状态(即0或1)。这是一个有返回值的函数,返回值为0或1(高电平或者低电平) 输入:GPIO_TypeDef* GPIOx,所用到管脚的GPIO组。uint16_t GPIO_Pin,所要读取的管脚,如GPIO_Pin_13。
与其相反的函数是:uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin),读取输出端口位的引脚状态。
6.uint16_t GPIO_ReadInputData(GPIO_TypeDef GPIOx)*
函数功能:读取指定的GPIO组数据端口。与其相反的函数是:uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx),读取输出GPIO组的端口数据。
7.void GPIO_SetBits(GPIO_TypeDef GPIOx, uint16_t GPIO_Pin)*
函数功能是:Sets the selected data port bits。就是设置GPIO端口的引脚状态。即将特定的引脚设置为高电平。
与其对应的函数是:void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin),清楚特定的端口位。即将特定的端口设置为低电平。
8.void GPIO_WriteBit(GPIO_TypeDef GPIOx, uint16_t GPIO_Pin, BitAction BitVal)*
函数功能:设置或清除特定端口位的引脚状态。
输入:GPIOx:GPIO组,GPIOA
GPIO_pin:gpio引脚,如gpio_Pin_1
BitAction BitVal:将端口位置高或者是置低。Bit_RESET:置低
Bit_SET: 置高
9.void GPIO_Write(GPIO_TypeDef GPIOx, uint16_t PortVal)*
函数功能:将数据写入指定的GPIO数据端口。
输入:PortVal:指定要写入端口输出数据寄存器(ODR寄存器)的值。
10.void GPIO_PinLockConfig(GPIO_TypeDef GPIOx, uint16_t GPIO_Pin)*
函数功能:锁定GPIO管脚配置寄存器。当执行正确的写序列设置了位16(LCKK)时,该寄存器用来锁定端口位的配置。位[15:0]用于锁定GPIO 端口的配置。在规定的写入操作期间,不能改变LCKP[15:0]。当对相应的端口位执行了LOCK序列后,在下次系统复位之前将不能再更改端口位的配置。具体的端口端口配置锁定寄存器请看stm32数据手册。
11.void GPIO_EventOutputConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource)
函数功能:选择用作事件输出的GPIO引脚。
输入:GPIO_PortSource:GPIOX(X=A~G)
GPIO_PinSource: GPIO_Pin_x(x=0~15)
12.void GPIO_EventOutputCmd(FunctionalState NewState)
函数功能:使能输出事件。
输入:Enables:使能
disables:禁止
13.void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState)
函数功能:更改指定管脚的映射。STM32除内核外还有很多内置外设,如串口,ADC,与GPIO复用 一些GPIO可以复用为内置外设的功能引脚,如: PA9,PA10可复用为功能串口1的发送接收引脚(芯片数据手册),端口服用的意义是: 使IO口得到最大限度的利用。
输入:GPIO_Remap 选择要复用的引脚
NewState:禁止或者使能。(ENABLE or DISABLE)
14.void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource)
函数功能:选择用作外部中断测试线的GPIO管脚
输入:GPIO_PortSource:选择要被用作外部中断测试线的GPIOX
GPIO_PinSource::选择要被用作外部中断测试线的端口位GPIO_Pin_x
具体的中断配置这里不详细说明
15. void GPIO_ETH_MediaInterfaceConfig(uint32_t GPIO_ETH_MediaInterface)
函数功能:以太网配置函数。
这个不会
GPIO库函数全部都在在这里了,通过写这片文章的,我对GPIO库函数又有了更深的理解。也把这些干货分享给像我一样的小白,我们一起加油呀。以后每周都会更新一篇的哦。