nrf52832之GPIO

一、GPIO介绍

1.概念

GPIO(The general purpose input/output)【通用输入输出】,nRF52832的GPIO被组织为1个端口,通过这个端口最多可以访问32个IO口,每个GPIO可以单独访问。

2.使用

nRF52832提供了10个用于操作GPIO的寄存器,通过这些寄存器可以配置使用GPIO引脚的很多特性。

3.可配置参数

  1. 方向
  2. 驱动能力
  3. 使能/禁用上下拉电阻
  4. 引脚感知功能
  5. 断开输入缓冲
  6. 模拟输入

二、GPIO寄存器

1.OUT

项目功能说明
读/写可读写
功能写GPIO端口,bit0-31对应引脚P0.00-P0.31
读/写0,引脚输出低电平;1,引脚输出高电平

2.OUTSET

项目功能说明
读/写可读写
功能引脚置位,bit0-31对应引脚P0.00-P0.31
0,引脚输出低电平,逻辑“0”;1,引脚输出高电平,逻辑“1”
1,引脚输出高电平;写0无效

3.OUTCLR

项目功能说明
读/写可读写
功能引脚清零,bit0-31对应引脚P0.00-P0.31
0,引脚输出低电平,逻辑“0”;1,引脚输出高电平,逻辑“1”
1,引脚输出低电平;写0无效

4.IN

项目功能说明
读/写只读
功能读GPIO端口,bit0-31对应引脚P0.00-P0.31

5.DIR

项目功能说明
读/写可读写
功能引脚方向配置,bit0-31对应引脚P0.00-P0.31
读/写0,引脚为输入方向;1,引脚为输出方向

6.DIRSET

项目功能说明
读/写可读写
功能引脚输出方向配置,bit0-31对应引脚P0.00-P0.31
0,引脚为输入方向;1,引脚为输出方向
1,引脚设为输出方向;写0无效

7.DIRCLR

项目功能说明
读/写可读写
功能引脚输入方向配置,bit0-31对应引脚P0.00-P0.31
0,引脚为输入方向;1,引脚为输出方向
1,引脚设为输入方向;写0无效

8.LATCH

项目功能说明
读/写可读写
功能锁存电平信号,bit0-31对应引脚P0.00-P0.31

9.DETECTMODE

项目功能说明
读/写可读写
功能检测模式配置,bit0-31对应引脚P0.00-P0.31

10.PIN_CNF[n](n=0-31)

项目功能说明
读/写可读写
功能引脚配置,bit0-31对应引脚P0.00-P0.31
位00,引脚为输入方向;1,引脚为输出方向
位10,连接输入缓冲器;1,断开输入缓冲器
位3-200,关闭上下拉电阻配置;01,开启下拉电阻;02,开启上拉电阻
位10-8驱动能力配置
位17-16引脚感知机制;00,关闭引脚感知;10,高电平感知;11,低电平感知

三、代码示例

nRF52832的GPIO外设基址为:0x50000000 对应代码里面的寄存器操作指针为:NRF_P0

sdk版本:nRF5_SDK_15.2.0_9412b96

1.以设置GPIO18为输出拉低,点亮LED2为例,相关代码如下

//设置引脚输出
//NRF_P0->DIR |= (1UL << 18);
NRF_P0->DIRSET = (1UL << 18);
 
//设置输出低电平
//NRF_P0->OUT &= ~(1UL << 18);
NRF_PO->OUTCLR = (1UL << 18);

2.相关库函数介绍

//头文件:nrf_gpio.h
pin_number:引脚编号,范围0~31
1)void nrf_gpio_cfg_output(uint32_t pin_number)
功能:设置指定引脚为输出方向

2)void nrf_gpio_range_cfg_output(uint32_t pin_range_start,uint32_t pin_range_end)
功能:设置指定范围内的连续引脚为输出方向

3)void nrf_gpio_cfg_input(uint32_t pin_number,nrf_gpio_pin_pull_t pull_config)
功能:设置指定引脚为输入方向

4)void nrf_gpio_range_cfg_input(uint32_t pin_range_start,uint32_t pin_range_end,nrf_gpio_pin_pull_t pull_config)
功能:设置指定范围内的连续引脚为输入方向

5)void nrf_gpio_pin_set(uint32_t pin_number)
功能:驱动指定的GPIO输出高电平

6)void nrf_gpio_pin_clear(uint32_t pin_number)
功能:驱动指定的GPIO输出低电平

7)void nrf_gpio_pin_toggle(uint32_t pin_number)
功能:翻转指定的GPIO输出状态

8)uint32_t nrf_gpio_pin_read(uint32_t pin_number)
功能:读取指定引脚的电平状态,0代表低电平,1代表高电平

9)uint32_t nrf_gpio_port_in_read(NRF_GPIO_Type const * p_reg)
功能:读取端口所有的GPIO的状态

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值