ARM32入门学习笔记之 GPIO库

ARM32入门学习笔记之 GPIO库

固件库中的GPIO函数

函数名描述
GPIO_Init根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器
GPIO_ReadInputDataBit读取指定端口管脚的输入
GPIO_ReadInputData读取指定的GPIO端口输入
GPIO_ReadInputDataBit读取指定端口管脚的输出
GPIO_ReadOutputData读取指定的GPIO端口输出
GPIO_SetBits设置指定的数据端口位
GPIO_ResetBits清除指定的数据端口位
GPIO_WriteBit设置或者清除指定的数据端口位
GPIO_Write向指定GPIO数据端口写入数据

1.GPIO_Init函数

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

根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器
参数1:GPIOx:x可以是A、B、C、D、E,来选择GPIO外设;
参数2:GPIO_InitStruct:指向结构GPIO_InitTypeDef的指针,包含了外设GPIO的配置信息参阅Section:GPIO_InitTypeDef查阅更多该参数允许取值范围;
例如:

//声明一个名为GPIO_InitStructure的GPIO_InitTypeDef型结构体
GPIO_InitTypeDef GPIO_InitStructure;
//选中端口1
GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_0;
//选择端口的速度为10M
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
//选择端口为输出模式
GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_OUT;
//选择端口为推挽输出
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
//选择端口为无上拉和下拉
GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_NOPULL;

GPIO_Init(GPIOA,&GPIO_InitStructure);

2.GPIO_ReadInputDataBit函数

uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

读取指定端口管脚的输入
参数1:GPIOx:同上
参数2:GPIO_Pin:待读取的端口位
例如:

uint8_t ReadValue;
ReadValue = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_7);

3.GPIO_ReadInputData函数

uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);

读取指定的GPIO端口输入
例如:

uint16_t ReadValue;
ReadValue = GPIO_ReadInputData(GPIOA);

4.GPIO_SetBits函数

void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

设置指定的数据端口位
例如:

//设置PA1和PA0为高电平
GPIO_SetBits(GPIOA,GPIO_Pin_1 |GPIO_Pin_0);

5.GPIO_ReSetBits函数

void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

清除指定的数据端口位
例如:

//设置PA1和PA0为低电平
GPIO_ReSetBits(GPIOA,GPIO_Pin1 | GPIO_Pin_0);

6.GPIO_WriteBit函数

void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);

设置或清除指定的数据端口位
例如:

//设置PA1和PA0为低电平
GPIO_WriteBit(GPIOA,GPIO_Pin_1 | GPIO_Pin_0, Bit_RESET);

7.GPIO_Write函数

void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);

向指向GPIO数据端口写入数据
例如:

//向PA口写入数据
GPIO_Write(GPIOA,0x0101);

注意:在初始化某端口时需要打开该端口的时钟以及配置系统的时钟源,与之相关的两个函数

RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOAEN,ENABLE);
SystemInit();
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值