STM32 STM32CubeMX 使用GPIO中断

芯片:STM32 F412

这里只写GPIO中断相关内容

打开STM32CubeMX,鼠标左键点击需要设置GPIO中断的引脚,选择GPIO_EXTI*,鼠标右键点击可以设置自定义LABEL

设置GPIO中断触发模式,我这里设置了上升沿和下降沿都触发

使能GPIO中断

添加中断函数

/** GPIO中断回调
  * @brief  EXTI line detection callbacks.
  * @param  GPIO_Pin: Specifies the pins connected EXTI line
  * @retval None
  */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
    uint32_t tNow = HAL_GetTick();
    // 上升按钮
    if(GPIO_Pin == BtnUp_Pin)
    {
        static int8_t btnOn = 0;
        GPIO_PinState pinState = HAL_GPIO_ReadPin(BtnUp_GPIO_Port, BtnUp_Pin);
        if(0 == btnOn && GPIO_PIN_RESET == pinState)
        {   // 按下
            {
                // 防抖判断
                for(uint8_t i = 0; i < 8; ++i)
                {
                    if(GPIO_PIN_RESET != HAL_GPIO_ReadPin(BtnUp_GPIO_Port, BtnUp_Pin))
                    {   // 抖动
                        return;
                    }
                    HAL_Delay(50);
                }
                btnOn = 1;
            }
        }
        else if(1 == btnOn && GPIO_PIN_SET == pinState)
        {   // 弹起
            // 防抖判断
            for(uint8_t i = 0; i < 5; ++i)
            {
                if(GPIO_PIN_SET != HAL_GPIO_ReadPin(BtnUp_GPIO_Port, BtnUp_Pin))
                {   // 抖动
                    return;
                }
                HAL_Delay(10);
            }
            btnOn = 0;
        }
        // 清除标志
        //__HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
    }
}

在中断中使用了HAL_GetTick()和HAL_Delay()函数,这个要求调整中断优先级,否则会在GPIO中卡死

GPIO中断优先级要比Time base的要低

 

 

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
STM32CubeMX是一款用于STM32微控制器的图形化配置工具。它能够帮助开发人员轻松进行GPIO(通用输入/输出)的配置。 首先,我们需要打开STM32CubeMX工具,并选择我们所使用的微控制器型号。然后,我们可以看到一个图形界面,里面列出了所有的引脚和外设选项。 要配置GPIO,我们可以从左侧的引脚列表中选择一个引脚,并在右侧的“GPIO设置”选项卡中进行配置。在此选项卡中,我们可以选择引脚的模式(输入、输出,或者复用功能)、速度(低、中、高)和拉电阻设置(无、上拉、下拉)。我们还可以选择引脚的初始状态(高或低)。 除了引脚的配置,我们还可以配置其他的GPIO设置,比如中断配置和模拟功能配置。在中断配置中,我们可以选择使能或禁用引脚的中断,并设置中断触发方式(上升沿下降沿、边沿触发等)。在模拟功能配置中,我们可以选择启用或禁用引脚的模拟功能,比如模拟输入或者DAC输出等。 配置完成后,我们只需要点击“生成代码”按钮,STM32CubeMX将自动生成初始化代码,包括引脚的初始化、外设的配置和中断处理等。我们可以将这些代码导入到我们所使用的集成开发环境(IDE)中,然后进行进一步的开发和调试。 总的来说,STM32CubeMX是一个强大的配置工具,能够帮助我们轻松地进行GPIO的配置。它提供了一个直观的图形界面,能够快速选择和配置引脚,同时生成初始化代码,加快了开发的速度和减少了出错的可能性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值