STM32-HAL庫-GPIO學習


庫函數

/* 初始化(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)

          { //應用代碼 }

        }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM