本節介紹通用輸入輸出(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驅動程序支持以下兩種操作模式。
- GPIO 模式 架構:如果指定該引腳工作在GPIO模式,則可以在輸入和輸出方向上對其進行編程。如果將方向配置爲通過方向寄存器輸出,則寫入輸出寄存器的數據將在引腳上輸出,也可以訪問輸出數據寄存器,而對輸出數據寄存器的訪問僅獲得最後寫入的值。輸出引腳默認爲推輓型,推輓輸出在這裏是指一種電子電路,它使用一對有源器件,它們交替地向連接的負載提供電流或從連接的負載吸收電流。推輓輸出存在於TTL和CMOS數字邏輯電路以及某些類型的放大器中,通常實現爲互補的一對晶體管,一個從負載到地的電流消耗或吸收電流,或者是負電源,另一個從正電源向負載提供電流或向負載提供電流。如果將方向配置爲輸入,則從輸入數據寄存器接收引腳上存在的數據。與輸出電路不同,施密特觸發器以及輸入電路上的上拉和下拉電阻。其中,施密特觸發器是一個將模擬輸入信號轉換爲數字輸出信號的有源電路。當目標引腳未連接至外部電源時,上拉和下拉電阻有助於將目標引腳設置爲默認電壓電平(高或低)。其中,施密特觸發器是一個將模擬輸入信號轉換爲數字輸出信號的有源電路。當目標引腳未連接至外部電源時,上拉和下拉電阻有助於將目標引腳設置爲默認電壓電平(高或低)。其中,施密特觸發器是一個將模擬輸入信號轉換爲數字輸出信號的有源電路。當目標引腳未連接至外部電源時,上拉和下拉電阻有助於將目標引腳設置爲默認電壓電平(高或低)。
- 外圍 模式 架構:引腳根據多路複用器設置以幾種板載外圍模式之一運行。它一次只能以一種模式運行,以避免共享同一引腳的外設之間發生衝突。
如何使用此驅動程序
- GPIO 模式。
- 步驟1.調用hal_gpio_init()初始化引腳。
- 步驟2.調用hal_pinmux_set_function()將引腳配置爲以GPIO模式運行。
- 步驟3.調用hal_gpio_set_direction()來配置GPIO的方向。
- 步驟4.調用hal_gpio_set_output()將數據設置爲輸出方向。
- 步驟5.調用hal_gpio_deinit()取消初始化該引腳。
- 樣例代碼:
無效 gpio_application(無效){hal_gpio_init(gpio_pin);hal_pinmux_set_function(gpio_pin,function_index); //將引腳設置爲在GPIO模式下運行。hal_gpio_set_direction(gpio_pin,HAL_GPIO_DIRECTION_OUTPUT);hal_gpio_set_output(gpio_pin,HAL_GPIO_DATA_HIGH);hal_gpio_deinit(gpio_pin);}
- 外圍 模式。
- 步驟1.調用hal_gpio_init()初始化引腳。
- 步驟2.調用hal_pinmux_set_function()將引腳配置爲在外圍模式下運行。
- 步驟3.調用hal_gpio_deinit()取消初始化該引腳。
- 樣例代碼:
無效 gpio_application(無效){hal_gpio_init(gpio_pin);//有關pinmux的更多信息,請參考hal_pinmux_define.hhal_pinmux_set_function(gpio_pin,function_index); //將引腳設置爲function_index中定義的外設模式。hal_gpio_deinit(gpio_pin);}
功能文件
◆ 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,則操作失敗。
注意
警告
例
◆ 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_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,則操作失敗。
注意
警告
例
◆ 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_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_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_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_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_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,則操作失敗。