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