3.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
位0:0,設置引腳輸入方向 1,設置引腳輸出方向
位1:0,連接輸入緩衝器 1,斷開輸入緩衝器
位3~2:00,關閉上下拉電阻配置 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
1)void nrf_gpio_cfg_output(uint32_t pin_number)
pin_number:引腳編號,範圍0~31
功能:設置指定引腳爲輸出方向

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的狀態

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章