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);