庫函數
/* 初始化(STM32CubeMX自動調用)*/ void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init) /* 重置 */ void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin) /* 讀引腳狀態 */ GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) /* 寫引腳狀態 */ void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) /* 反轉引腳狀態 */ void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) /* 鎖定引腳狀態 */ HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) /* 中斷(STM32CubeMX自動調用,在中斷服務函數中)*/ void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin) /* 外部中斷開啟(一般不使用) */ void HAL_NVIC_EnableIRQ(IRQn_Type IRQn) /* 外部中斷關閉(一般不使用) */ void HAL_NVIC_DisableIRQ(IRQn_Type IRQn)
應用
以下舉例分為兩種
以引腳PA0為例
以經過STM32CubeMX重命名為QY的任意可使用的引腳為例
輸入-讀取引腳狀態
HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)
HAL_GPIO_ReadPin(QY_GPIO_Port, QY_Pin)
輸出-改變引腳狀態
低電平
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET)
HAL_GPIO_WritePin(QY_GPIO_Port, QY_Pin, GPIO_PIN_RESET)
高電平
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET)
HAL_GPIO_WritePin(QY_GPIO_Port, QY_Pin, GPIO_PIN_SET)
反轉電平
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_0)
HAL_GPIO_TogglePin(QY_GPIO_Port, QY_Pin)
中斷
NVIC(嵌套向量中斷控制器)主要有三個參數:中斷使能,搶占優先級,響應優先級(優先級數值越小,級別越高)
GPIO mode
ExternalInterruptModewithRisingedgetriggerdetection//上升沿觸發
ExternalInterruptModewithFallingedgetriggerdetection//下降沿觸發
ExternalInterruptModewithRising/Fallingedgetriggerdetection//上升沿或下降沿觸發
在USERCODEBEGIN4中設置中斷回調函數
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == KEY_Pin)
{ //應用代碼 }
}