NRF51822裸机GPIO 笔记记录
数据手册的管脚图
GPIO端口外设最多可实现32个引脚,PIN0至PIN31。 所有引脚可配置
1.输入输出;
2.驱动能力;
3.上拉,下拉配置;
4.高电平或低电平触发器唤醒;
5.触发中断;
6.配置为PPI事件或者任务;
7.配置为串口或者正交调制信号;
OUTSET:设置某个引脚的输出为高电平;
OUTCLR:设置某个引脚的输出为低电平;
DIRSET:设置某个引脚的输入为高电平;
DIRCLR:设置某个引脚的输入为低电平;
(任何位写 “1” 有效,写 “0” 无作用。)
PIN_CNF:每一个引脚都可以在PIN_CNF [n]寄存器中单独配置(n = 0…31)。
配置寄存器:
•方向
•驱动强度
•启用上拉和下拉电阻
•引脚感应
•输入缓冲区断开
•模拟输入(针对所选引脚)
GPIO操作
使用相关库函数:nrf_gpio.h
相关定义
// 输入输出方向
typedef enum
{
NRF_GPIO_PORT_DIR_OUTPUT, ///< Output
NRF_GPIO_PORT_DIR_INPUT ///< Input
} nrf_gpio_port_dir_t;
//推挽设置:无上下拉、下拉、上拉
typedef enum
{
NRF_GPIO_PIN_NOPULL = GPIO_PIN_CNF_PULL_Disabled, ///< Pin pullup resistor disabled
NRF_GPIO_PIN_PULLDOWN = GPIO_PIN_CNF_PULL_Pulldown, ///< Pin pulldown resistor enabled
NRF_GPIO_PIN_PULLUP = GPIO_PIN_CNF_PULL_Pullup, ///< Pin pullup resistor enabled
} nrf_gpio_pin_pull_t;
...........
常用函数
//输入输出:
__STATIC_INLINE void nrf_gpio_cfg_output(uint32_t pin_number)
__STATIC_INLINE void nrf_gpio_cfg_input(uint32_t pin_number, nrf_gpio_pin_pull_t pull_config)
// 引脚写:
__STATIC_INLINE void nrf_gpio_pin_set(uint32_t pin_number); //输出高电平
__STATIC_INLINE void nrf_gpio_pin_clear(uint32_t pin_number); //输出低电平
__STATIC_INLINE void nrf_gpio_pin_toggle(uint32_t pin_number); //电平反转
//引脚读:
__STATIC_INLINE void nrf_gpio_pin_read(uint32_t pin_number);