本节介绍通用输入输出(GPIO)API,包括术语和首字母缩写词,功能,体系结构,如何使用API,GPIO功能组,枚举,结构和功能。
条款 | 细节 |
|---|---|
通用输入输出 | 通用输入输出是集成电路上的通用引脚,定义为输入或输出引脚,并在运行时由用户控制。有关更多信息,请参阅Wikipedia中的通用输入输出。 |
GPIO驱动程序支持以下两种操作模式。
功能 | |
|---|---|
hal_gpio_status_t | hal_gpio_init(hal_gpio_pin_t gpio_pin) |
此功能使用基本功能初始化GPIO硬件。使用前必须初始化目标引脚。 更多... | |
hal_gpio_status_t | hal_gpio_deinit(hal_gpio_pin_t gpio_pin) |
该函数将GPIO硬件初始化为默认状态。如果不使用目标引脚,则必须将其初始化。 更多... | |
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中提供了每个引脚的备用功能。 更多... | |
hal_gpio_status_t | hal_gpio_get_input(hal_gpio_pin_t gpio_pin,hal_gpio_data_t * gpio_data) |
当输入GPIO的方向时,此函数获取目标GPIO的输入数据。 更多... | |
hal_gpio_status_t | hal_gpio_set_output(hal_gpio_pin_t gpio_pin,hal_gpio_data_t gpio_data) |
该功能设置目标GPIO的输出数据。 更多... | |
hal_gpio_status_t | hal_gpio_get_output(hal_gpio_pin_t gpio_pin,hal_gpio_data_t * gpio_data) |
当输出GPIO的方向时,此函数获取目标GPIO的输出数据。 更多... | |
hal_gpio_status_t | hal_gpio_set_direction(hal_gpio_pin_t gpio_pin,hal_gpio_direction_t gpio_direction) |
该功能设置目标GPIO的方向。 更多... | |
hal_gpio_status_t | hal_gpio_get_direction(hal_gpio_pin_t gpio_pin,hal_gpio_direction_t * gpio_direction) |
此函数获取目标GPIO的方向。 更多... | |
hal_gpio_status_t | hal_gpio_toggle_pin(hal_gpio_pin_t gpio_pin) |
输出引脚方向时,此功能切换目标GPIO的输出数据。执行此功能后,目标GPIO的输出数据将取反。 更多... | |
hal_gpio_status_t | hal_gpio_enable_inversion(hal_gpio_pin_t gpio_pin) |
此功能启用目标GPIO的输入数据反转,此功能之后,目标GPIO的输入数据将始终反转,直到禁用了反转功能。 更多... | |
hal_gpio_status_t | hal_gpio_disable_inversion(hal_gpio_pin_t gpio_pin) |
该功能禁用目标GPIO的输入数据反转。 更多... | |
hal_gpio_status_t | hal_gpio_pull_up(hal_gpio_pin_t gpio_pin) |
该功能将目标GPIO设置为上拉状态,执行此功能后,如果该引脚断开连接,则目标引脚的输入数据将等于高电平。该功能仅通过一个上拉电阻在引脚上运行。 更多... | |
hal_gpio_status_t | hal_gpio_pull_down(hal_gpio_pin_t gpio_pin) |
此功能将目标GPIO设置为下拉状态,此功能之后,如果该引脚断开连接,则目标引脚的输入数据将等于低电平。该功能通过一个下拉电阻在引脚上运行。 更多... | |
hal_gpio_status_t | hal_gpio_disable_pull(hal_gpio_pin_t gpio_pin) |
该功能禁用目标GPIO的上拉或下拉。该功能通过一个上拉电阻和一个下拉电阻在引脚上运行。 更多... | |
hal_gpio_status_t | hal_gpio_set_driving_current(hal_gpio_pin_t gpio_pin,hal_gpio_driving_current_t驱动) |
该功能设置目标GPIO的驱动电流。 更多... | |
hal_gpio_status_t | hal_gpio_get_driving_current(hal_gpio_pin_t gpio_pin,hal_gpio_driving_current_t *驱动) |
该功能获取目标GPIO的驱动电流。 更多... | |
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_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_status_t ret;
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_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_status_t ret;
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_set_direction(gpio_pin,HAL_GPIO_DIRECTION_INPUT);
ret = hal_gpio_pull_down(gpio_pin);
ret = hal_gpio_disable_pull(gpio_pin); //目标GPIO的上拉状态被禁用。
ret = hal_gpio_deinit(gpio_pin);
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_status_t ret;
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_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_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_status_t ret;
hal_pinmux_status_t ret_pinmux_status;
hal_gpio_driving_current_t *驾驶;
ret = hal_gpio_init(gpio_pin);
ret = hal_gpio_set_driving(gpio_pin,&driving);
ret = hal_gpio_deinit(gpio_pin);
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_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_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_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_status_t ret;
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_set_direction(gpio_pin,HAL_GPIO_DIRECTION_INPUT);
ret = hal_gpio_pull_down(gpio_pin); //目标GPIO的上拉状态设置为下拉。
ret = hal_gpio_deinit(gpio_pin);
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_status_t ret;
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_set_direction(gpio_pin,HAL_GPIO_DIRECTION_INPUT);
ret = hal_gpio_pull_up(gpio_pin); //目标GPIO的上拉状态设置为上拉。
ret = hal_gpio_deinit(gpio_pin);
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_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_status_t ret;
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_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_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_gpio_status_t ret;
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_set_direction(gpio_pin,HAL_GPIO_DIRECTION_OUTPUT);
ret = hal_gpio_set_output(gpio_pin,HAL_GPIO_DATA_HIGH);
ret = hal_gpio_toggle_pin(gpio_pin); // gpio_pin的输出数据将从高电平切换为低电平。
ret = hal_gpio_deinit(gpio_pin);
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,则操作失败。