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

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