AB153x API----通用輸入輸出

本節介紹通用輸入輸出(GPIO)API,包括術語和首字母縮寫詞,功能,體系結構,如何使用API​​,GPIO功能組,枚舉,結構和功能。

術語和首字母縮寫詞

條款 細節
通用輸入輸出 通用輸入輸出是集成電路上的通用引腳,定義爲輸入或輸出引腳,並在運行時由用戶控制。有關更多信息,請參閱Wikipedia中的通用輸入輸出

支持的功能

  • 支持 GPIO  外設 操作 模式
    GPIO根據用戶配置以各種模式運行:
    • GPIO 模式:在該模式下,通過讀寫相應的數據寄存器將引腳編程爲軟件控制的輸入或輸出。輸入數據和輸出數據都可以是數字低電平或數字高電平。
    • 外設 模式:在該模式下,引腳用作嵌入式外設。微控制器引腳通過一個多路複用器將外設一次連接到一個備用功能。外圍模塊在使用前必須將Pinmux配置爲相應的引腳。應用pinmux配置的兩種方法:調用hal_pinmux_set_function()或配置Easy pinmux工具(EPT),這是一種軟件工具,可爲pinmux配置提供圖形用戶界面。有關引腳替代功能的更多信息,請參考hal_pinmux_define.h
  • 調用hal_pinmux_set_function()設置引腳模式,並調用hal_gpio_set_direction()設置GPIO的方向。如果該引腳處於GPIO模式,則調用hal_gpio_get_input()獲取該引腳的輸入數據,並調用hal_gpio_set_output()設置要輸出的數據。
  • 支持 切換 功能
    切換功能會爲每個功能調用反轉引腳的輸出數據。
    調用hal_gpio_toggle_pin()切換目標引腳的輸出數據。
  • 支持上   下拉 功能
    如果未連接信號源,則上拉和下拉功能定義引腳的輸入狀態。上拉和下拉功能均通過電阻實現。通過配置GPIO寄存器設置目標引腳的上拉狀態。
    調用hal_gpio_pull_down()設置引腳爲下拉狀態,調用hal_gpio_pull_up()設置引腳爲上拉狀態。
  • 支持 反轉 功能
    反轉功能會反轉GPIO的輸入數據,直到禁用該功能爲止。當芯片輸入爲高電平有效而連接的設備處於輸出狀態且低電平有效時,此功能很有用。
    調用hal_gpio_enable_inversion()反轉引腳的輸入數據,直到通過調用hal_gpio_disable_inversion()禁用該功能。

GPIO的軟件架構

GPIO驅動程序支持以下兩種操作模式。

  1. GPIO 模式 架構:如果指定該引腳工作在GPIO模式,則可以在輸入和輸出方向上對其進行編程。如果將方向配置爲通過方向寄存器輸出,則寫入輸出寄存器的數據將在引腳上輸出,也可以訪問輸出數據寄存器,而對輸出數據寄存器的訪問僅獲得最後寫入的值。輸出引腳默認爲推輓型,推輓輸出在這裏是指一種電子電路,它使用一對有源器件,它們交替地向連接的負載提供電流或從連接的負載吸收電流。推輓輸出存在於TTL和CMOS數字邏輯電路以及某些類型的放大器中,通常實現爲互補的一對晶體管,一個從負載到地的電流消耗或吸收電流,或者是負電源,另一個從正電源向負載提供電流或向負載提供電流。如果將方向配置爲輸入,則從輸入數據寄存器接收引腳上存在的數據。與輸出電路不同,施密特觸發器以及輸入電路上的上拉和下拉電阻。其中,施密特觸發器是一個將模擬輸入信號轉換爲數字輸出信號的有源電路。當目標引腳未連接至外部電源時,上拉和下拉電阻有助於將目標引腳設置爲默認電壓電平(高或低)。其中,施密特觸發器是一個將模擬輸入信號轉換爲數字輸出信號的有源電路。當目標引腳未連接至外部電源時,上拉和下拉電阻有助於將目標引腳設置爲默認電壓電平(高或低)。其中,施密特觸發器是一個將模擬輸入信號轉換爲數字輸出信號的有源電路。當目標引腳未連接至外部電源時,上拉和下拉電阻有助於將目標引腳設置爲默認電壓電平(高或低)。
  2. 外圍 模式 架構:引腳根據多路複用器設置以幾種板載外圍模式之一運行。它一次只能以一種模式運行,以避免共享同一引腳的外設之間發生衝突。

如何使用此驅動程序

功能

hal_gpio_status_t  hal_gpio_inithal_gpio_pin_t gpio_pin)
  此功能使用基本功能初始化GPIO硬件。使用前必須初始化目標引腳。 更多...
 
hal_gpio_status_t  hal_gpio_deinithal_gpio_pin_t gpio_pin)
  該函數將GPIO硬件初始化爲默認狀態。如果不使用目標引腳,則必須將其初始化。 更多...
 
hal_pinmux_status_t  hal_pinmux_set_functionhal_gpio_pin_t gpio_pin,hal_pinmux_select_t function_index)
  此功能配置目標GPIO的pinmux。引腳多路複用器(pinmux)連接引腳和板載外設,因此一旦將引腳編程爲外設功能,該引腳將以特定模式工作。hal_pinmux_define.h中提供了每個引腳的備用功能。 更多...
 
hal_gpio_status_t  hal_gpio_get_inputhal_gpio_pin_t gpio_pin,hal_gpio_data_t * gpio_data)
  當輸入GPIO的方向時,此函數獲取目標GPIO的輸入數據。 更多...
 
hal_gpio_status_t  hal_gpio_set_outputhal_gpio_pin_t gpio_pin,hal_gpio_data_t gpio_data)
  該功能設置目標GPIO的輸出數據。 更多...
 
hal_gpio_status_t  hal_gpio_get_outputhal_gpio_pin_t gpio_pin,hal_gpio_data_t * gpio_data)
  當輸出GPIO的方向時,此函數獲取目標GPIO的輸出數據。 更多...
 
hal_gpio_status_t  hal_gpio_set_directionhal_gpio_pin_t gpio_pin,hal_gpio_direction_t gpio_direction)
  該功能設置目標GPIO的方向。 更多...
 
hal_gpio_status_t  hal_gpio_get_directionhal_gpio_pin_t gpio_pin,hal_gpio_direction_t * gpio_direction)
  此函數獲取目標GPIO的方向。 更多...
 
hal_gpio_status_t  hal_gpio_toggle_pinhal_gpio_pin_t gpio_pin)
  輸出引腳方向時,此功能切換目標GPIO的輸出數據。執行此功能後,目標GPIO的輸出數據將取反。 更多...
 
hal_gpio_status_t  hal_gpio_enable_inversionhal_gpio_pin_t gpio_pin)
  此功能啓用目標GPIO的輸入數據反轉,此功能之後,目標GPIO的輸入數據將始終反轉,直到禁用了反轉功能。 更多...
 
hal_gpio_status_t  hal_gpio_disable_inversionhal_gpio_pin_t gpio_pin)
  該功能禁用目標GPIO的輸入數據反轉。 更多...
 
hal_gpio_status_t  hal_gpio_pull_uphal_gpio_pin_t gpio_pin)
  該功能將目標GPIO設置爲上拉狀態,執行此功能後,如果該引腳斷開連接,則目標引腳的輸入數據將等於高電平。該功能僅通過一個上拉電阻在引腳上運行。 更多...
 
hal_gpio_status_t  hal_gpio_pull_downhal_gpio_pin_t gpio_pin)
  此功能將目標GPIO設置爲下拉狀態,此功能之後,如果該引腳斷開連接,則目標引腳的輸入數據將等於低電平。該功能通過一個下拉電阻在引腳上運行。 更多...
 
hal_gpio_status_t  hal_gpio_disable_pullhal_gpio_pin_t gpio_pin)
  該功能禁用目標GPIO的上拉或下拉。該功能通過一個上拉電阻和一個下拉電阻在引腳上運行。 更多...
 
hal_gpio_status_t  hal_gpio_set_driving_currenthal_gpio_pin_t gpio_pin,hal_gpio_driving_current_t驅動)
  該功能設置目標GPIO的驅動電流。 更多...
 
hal_gpio_status_t  hal_gpio_get_driving_currenthal_gpio_pin_t gpio_pin,hal_gpio_driving_current_t *驅動)
  該功能獲取目標GPIO的驅動電流。 更多...
 

功能文件

◆ hal_gpio_deinit()

hal_gpio_status_t hal_gpio_deinit hal_gpio_pin_t  gpio_pin  

該函數將GPIO硬件初始化爲默認狀態。如果不使用目標引腳,則必須將其初始化。

參量

[在] gpio_pin 指定要初始化的引腳號。

退貨

指示此函數調用是否成功。如果返回值爲HAL_GPIO_STATUS_OK,則操作成功完成。如果返回值爲HAL_GPIO_STATUS_ERROR_PIN,則輸入引腳號無效,必須驗證參數。如果返回值爲HAL_GPIO_STATUS_ERROR,則操作失敗。

注意

警告

◆ hal_gpio_disable_inversion()

hal_gpio_status_t hal_gpio_disable_inversion hal_gpio_pin_t  gpio_pin  

該功能禁用目標GPIO的輸入數據反轉。

參量

[在] gpio_pin 指定要配置的引腳號。

退貨

指示此函數調用是否成功。如果返回值爲HAL_GPIO_STATUS_OK,則操作成功完成。如果返回值爲HAL_GPIO_STATUS_ERROR_PIN,則輸入引腳號無效,必須驗證參數。如果返回值爲HAL_GPIO_STATUS_ERROR,則操作失敗。

注意

警告

 
ret = hal_gpio_init(gpio_pin);
ret = hal_gpio_enable_inversion(gpio_pin);
//做其他事情
ret = hal_gpio_disable_inversion(gpio_pin);
ret = hal_gpio_deinit(gpio_pin);

◆ hal_gpio_disable_pull()

hal_gpio_status_t hal_gpio_disable_pull hal_gpio_pin_t  gpio_pin  

該功能禁用目標GPIO的上拉或下拉。該功能通過一個上拉電阻和一個下拉電阻在引腳上運行。

參量

[在] gpio_pin 指定要設置的引腳號。

退貨

指示此函數調用是否成功。如果返回值爲HAL_GPIO_STATUS_OK,則操作成功完成。如果返回值爲HAL_GPIO_STATUS_ERROR_PIN,則輸入引腳號無效,必須驗證參數。如果返回值爲HAL_GPIO_STATUS_ERROR,則操作失敗。

注意

警告

hal_pinmux_status_t ret_pinmux_status;
 
ret = hal_gpio_init(gpio_pin);
ret_pinmux_status = hal_pinmux_set_function(gpio_pin,function_index); //將引腳設置爲GPIO模式。
ret = hal_gpio_pull_down(gpio_pin);
ret = hal_gpio_disable_pull(gpio_pin); //目標GPIO的上拉狀態被禁用。
ret = hal_gpio_deinit(gpio_pin);

◆ hal_gpio_enable_inversion()

hal_gpio_status_t hal_gpio_enable_inversion hal_gpio_pin_t  gpio_pin  

此功能啓用目標GPIO的輸入數據反轉,此功能之後,目標GPIO的輸入數據將始終反轉,直到禁用了反轉功能。

參量

[在] gpio_pin 指定要反轉的引腳號。

退貨

指示此函數調用是否成功。如果返回值爲HAL_GPIO_STATUS_OK,則操作成功完成。如果返回值爲HAL_GPIO_STATUS_ERROR_PIN,則輸入引腳號無效,必須驗證參數。如果返回值爲HAL_GPIO_STATUS_ERROR,則操作失敗。

注意

警告

 
ret = hal_gpio_init(gpio_pin);
ret = hal_gpio_enable_inversion(gpio_pin);
//做其他事情
ret = hal_gpio_disable_inversion(gpio_pin);
ret = hal_gpio_deinit(gpio_pin);

◆ hal_gpio_get_direction()

hal_gpio_status_t hal_gpio_get_direction hal_gpio_pin_t  gpio_pin
    hal_gpio_direction_t *  gpio_direction 
     

此函數獲取目標GPIO的方向。

參量

[在] gpio_pin 指定要操作的引腳號。
[在] gpio_direction 是目標GPIO的方向,可以輸入或輸出方向。

退貨

指示此函數調用是否成功。如果返回值爲HAL_GPIO_STATUS_OK,則操作成功完成。如果返回值爲HAL_GPIO_STATUS_INVALID_PARAMETER,則給出了錯誤的參數(引腳號除外),必須驗證該參數。如果返回值爲HAL_GPIO_STATUS_ERROR_PIN,則輸入引腳號無效,必須驗證參數。如果返回值爲HAL_GPIO_STATUS_ERROR,則操作失敗。

注意

警告

◆ hal_gpio_get_driving_current()

hal_gpio_status_t hal_gpio_get_driving_current hal_gpio_pin_t  gpio_pin
    hal_gpio_driving_current_t *  駕駛 
     

該功能獲取目標GPIO的驅動電流。

參量

[在] gpio_pin 指定要配置的引腳號。
[在] 駕駛 指定要設置爲目標GPIO的驅動電流。

退貨

指示此函數調用是否成功。如果返回值爲HAL_GPIO_STATUS_OK,則操作成功完成。如果返回值爲HAL_GPIO_STATUS_ERROR_PIN,則操作失敗。

注意

警告

hal_pinmux_status_t ret_pinmux_status;
 
ret = hal_gpio_init(gpio_pin);
ret = hal_gpio_set_driving(gpio_pin,&driving);
ret = hal_gpio_deinit(gpio_pin);

◆ hal_gpio_get_input()

hal_gpio_status_t hal_gpio_get_input hal_gpio_pin_t  gpio_pin
    hal_gpio_data_t *  gpio_data 
     

當輸入GPIO的方向時,此函數獲取目標GPIO的輸入數據。

參量

[在] gpio_pin 指定要操作的引腳號。
[在] gpio_data 是從目標GPIO接收的輸入數據。

退貨

指示此函數調用是否成功。如果返回值爲HAL_GPIO_STATUS_OK,則操作成功完成。如果返回值爲HAL_GPIO_STATUS_INVALID_PARAMETER,則給出了錯誤的參數(引腳號除外),必須驗證該參數。如果返回值爲HAL_GPIO_STATUS_ERROR_PIN,則輸入引腳號無效,必須驗證參數。如果返回值爲HAL_GPIO_STATUS_ERROR,則操作失敗。

注意

警告

◆ hal_gpio_get_output()

hal_gpio_status_t hal_gpio_get_output hal_gpio_pin_t  gpio_pin
    hal_gpio_data_t *  gpio_data 
     

當輸出GPIO的方向時,此函數獲取目標GPIO的輸出數據。

參量

[在] gpio_pin 指定要操作的引腳號。
[在] gpio_data 是目標GPIO的輸出數據。

退貨

指示此函數調用是否成功。如果返回值爲HAL_GPIO_STATUS_OK,則操作成功完成。如果返回值爲HAL_GPIO_STATUS_INVALID_PARAMETER,則給出了錯誤的參數(引腳號除外),必須驗證該參數。如果返回值爲HAL_GPIO_STATUS_ERROR_PIN,則輸入引腳號無效,必須驗證參數。如果返回值爲HAL_GPIO_STATUS_ERROR,則操作失敗。

注意

警告

◆ hal_gpio_init()

hal_gpio_status_t hal_gpio_init hal_gpio_pin_t  gpio_pin  

此功能使用基本功能初始化GPIO硬件。使用前必須初始化目標引腳。

參量

[在] gpio_pin 指定要初始化的引腳號。

退貨

指示此函數調用是否成功。如果返回值爲HAL_GPIO_STATUS_OK,則操作成功完成。如果返回值爲HAL_GPIO_STATUS_ERROR_PIN,則輸入引腳號無效,必須驗證參數。如果返回值爲HAL_GPIO_STATUS_ERROR,則操作失敗。

注意

警告

◆ hal_gpio_pull_down()

hal_gpio_status_t hal_gpio_pull_down hal_gpio_pin_t  gpio_pin  

此功能將目標GPIO設置爲下拉狀態,此功能之後,如果該引腳斷開連接,則目標引腳的輸入數據將等於低電平。該功能通過一個下拉電阻在引腳上運行。

參量

[在] gpio_pin 指定要設置的引腳號。

退貨

指示此函數調用是否成功。如果返回值爲HAL_GPIO_STATUS_OK,則操作成功完成。如果返回值爲HAL_GPIO_STATUS_ERROR_PIN,則輸入引腳號無效,必須驗證參數。如果返回值爲HAL_GPIO_STATUS_ERROR,則操作失敗。

注意

警告

hal_pinmux_status_t ret_pinmux_status;
 
ret = hal_gpio_init(gpio_pin);
ret_pinmux_status = hal_pinmux_set_function(gpio_pin,function_index); //將引腳設置爲GPIO模式。
ret = hal_gpio_pull_down(gpio_pin); //目標GPIO的上拉狀態設置爲下拉。
ret = hal_gpio_deinit(gpio_pin);

◆ hal_gpio_pull_up()

hal_gpio_status_t hal_gpio_pull_up hal_gpio_pin_t  gpio_pin  

該功能將目標GPIO設置爲上拉狀態,執行此功能後,如果該引腳斷開連接,則目標引腳的輸入數據將等於高電平。該功能僅通過一個上拉電阻在引腳上運行。

參量

[在] gpio_pin 指定要設置的引腳號。

退貨

指示此函數調用是否成功。如果返回值爲HAL_GPIO_STATUS_OK,則操作成功完成。如果返回值爲HAL_GPIO_STATUS_ERROR_PIN,則輸入引腳號無效,必須驗證參數。如果返回值爲HAL_GPIO_STATUS_ERROR,則操作失敗。

注意

警告

hal_pinmux_status_t ret_pinmux_status;
 
ret = hal_gpio_init(gpio_pin);
ret_pinmux_status = hal_pinmux_set_function(gpio_pin,function_index); //將引腳設置爲GPIO模式。
ret = hal_gpio_pull_up(gpio_pin); //目標GPIO的上拉狀態設置爲上拉。
ret = hal_gpio_deinit(gpio_pin);

◆ hal_gpio_set_direction()

hal_gpio_status_t hal_gpio_set_direction hal_gpio_pin_t  gpio_pin
    hal_gpio_direction_t  gpio_direction 
     

該功能設置目標GPIO的方向。

參量

[在] gpio_pin 指定要設置的引腳號。
[在] gpio_direction 是目標GPIO的方向,可以輸入或輸出方向。

退貨

指示此函數調用是否成功。如果返回值爲HAL_GPIO_STATUS_OK,則操作成功完成。如果返回值爲HAL_GPIO_STATUS_INVALID_PARAMETER,則給出了錯誤的參數(引腳號除外),必須驗證該參數。如果返回值爲HAL_GPIO_STATUS_ERROR_PIN,則輸入引腳號無效,必須驗證參數。如果返回值爲HAL_GPIO_STATUS_ERROR,則操作失敗。

注意

警告

◆ hal_gpio_set_driving_current()

hal_gpio_status_t hal_gpio_set_driving_current hal_gpio_pin_t  gpio_pin
    hal_gpio_driving_current_t  駕駛 
     

該功能設置目標GPIO的驅動電流。

參量

[在] gpio_pin 指定要配置的引腳號。
[在] 駕駛 指定設置爲目標GPIO的驅動電流。

退貨

指示此函數調用是否成功。如果返回值爲HAL_GPIO_STATUS_OK,則操作成功完成。如果返回值爲HAL_GPIO_STATUS_ERROR_PIN,則操作失敗。

注意

警告

hal_pinmux_status_t ret_pinmux_status;
 
ret = hal_gpio_init(gpio_pin);
ret = hal_gpio_set_driving(gpio_pin,HAL_GPIO_DRIVING_16MA);
ret = hal_gpio_deinit(gpio_pin);

◆ hal_gpio_set_output()

hal_gpio_status_t hal_gpio_set_output hal_gpio_pin_t  gpio_pin
    hal_gpio_data_t  gpio_data 
     

該功能設置目標GPIO的輸出數據。

參量

[在] gpio_pin 指定要操作的引腳號。
[在] gpio_data 是目標GPIO的輸出數據。

退貨

指示此函數調用是否成功。如果返回值爲HAL_GPIO_STATUS_OK,則操作成功完成。如果返回值爲HAL_GPIO_STATUS_INVALID_PARAMETER,則給出了錯誤的參數(引腳號除外),必須驗證該參數。如果返回值爲HAL_GPIO_STATUS_ERROR_PIN,則輸入引腳號無效,必須驗證參數。如果返回值爲HAL_GPIO_STATUS_ERROR,則操作失敗。

注意

警告

◆ hal_gpio_toggle_pin()

hal_gpio_status_t hal_gpio_toggle_pin hal_gpio_pin_t  gpio_pin  

輸出引腳方向時,此功能切換目標GPIO的輸出數據。執行此功能後,目標GPIO的輸出數據將取反。

參量

[在] gpio_pin 指定要切換的引腳號。

退貨

指示此函數調用是否成功。如果返回值爲HAL_GPIO_STATUS_OK,則操作成功完成。如果返回值爲HAL_GPIO_STATUS_ERROR_PIN,則輸入引腳號無效,必須驗證參數。如果返回值爲HAL_GPIO_STATUS_ERROR,則操作失敗。

注意

警告

hal_pinmux_status_t ret_pinmux_status;
 
ret = hal_gpio_init(gpio_pin);
ret_pinmux_status = hal_pinmux_set_function(gpio_pin,function_index); //將引腳設置爲GPIO模式。
ret = hal_gpio_toggle_pin(gpio_pin); // gpio_pin的輸出數據將從高電平切換爲低電平。
ret = hal_gpio_deinit(gpio_pin);

◆ hal_pinmux_set_function()

hal_pinmux_status_t hal_pinmux_set_function hal_gpio_pin_t  gpio_pin
    hal_pinmux_select_t  function_index 
     

此功能配置目標GPIO的pinmux。引腳多路複用器(pinmux)連接引腳和板載外設,因此一旦將引腳編程爲外設功能,該引腳將以特定模式工作。hal_pinmux_define.h中提供了每個引腳的備用功能。

參量

[在] gpio_pin 指定要配置的引腳號。
[在] function_index 指定引腳的功能。

退貨

指示此函數調用是否成功。如果返回值爲HAL_PINMUX_STATUS_OK,則操作成功完成。如果返回值爲HAL_PINMUX_STATUS_INVALID_FUNCTION,則給出了錯誤的備用函數,必須驗證參數。如果返回值爲HAL_PINMUX_STATUS_ERROR_PORT,則輸入引腳號無效,必須驗證參數。如果返回值爲HAL_PINMUX_STATUS_ERROR,則操作失敗。

 

 

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