定时器和按钮接口stm32

Posted

技术标签:

【中文标题】定时器和按钮接口stm32【英文标题】:Timers and push button interface stm32 【发布时间】:2021-06-18 21:33:09 【问题描述】:

如何开发一个程序,以便当我们按下按钮时,计时器应该启动,如果按下按钮超过 5 秒,则应通过 UART 发送消息,如果计时器低于 5 秒,则会发出错误消息应该会出现。

我需要有关如何在 stm 中连接按钮和计时器的帮助。

【问题讨论】:

不,我需要有关如何在 stm 中连接按钮和计时器的帮助 您使用的是什么框架(STM HAL、Arduino 等)? STM HAL 是框架 到目前为止你做了什么?给我们看:) 您可能应该从有关使用 HAL 进行 GPIO 编程的教程开始(用于按钮)。一旦成功,您就可以继续学习有关计时器和 UART 的类似教程。 simonmartin.ch/resources/stm32/dl/…medium.com/vicara-hardware-university/…letanphuc.net/2015/02/… 【参考方案1】:

无论您的框架如何,您都可以实现这种检测按钮按下和释放的算法。 为此,您需要在上升沿和下降沿都启用 EXTI。 EXTI 处理程序如下所示:

  EXTI_Handler ()
  
    /* resolve button status according GPIO value transition */
    if (button_pushed)
      
        start_timer ().
      
    else if (button_released)
      
        local_seconds_count = get_timer_count_in_seconds ();
        if (local_seconds_count > 5)
          
            /* 5s have elapsed */
            send_uart (OK_MSG);
           
        else
          
            send_uart (ERR_MSG);
          
        /* stop timer */
        stop_timer ();
      
  

其他想法可能基于 SysTick 计时器和 HAL_GetTicks:只需使用一个全局变量来存储按钮按下瞬间并在释放时比较+清除它。

您可以在visualgdb site 中找到有关 STM32 定时器的精彩教程。 EXTI 请参考this page。

【讨论】:

以上是关于定时器和按钮接口stm32的主要内容,如果未能解决你的问题,请参考以下文章

STM32CubeMX学习笔记(23)——通用定时器接口使用(输入捕获测量脉宽)

STM32伺服编码器接口

嵌入式接口之TIM定时器与NVIC的STM32模板库函数的一些解释

3STM32F407ZGT6具体参数

Stm32高级定时器

STM32Cubemx——定时器中断