原理基于STM32G431RBTX系列单片机HAL库设置定时器定时时间为10ms每10ms按键检测当按键按下时变量加1 当变量为200时按键按下时间为2S,触发其余操作。HAL库配置定时器使能定时器1配置预分频值和自动重装载寄存器预分频(PCS)和自动重装载寄存器(ARR)的配置依照该公式定时时间秒(PSC1)×(ARR1)/定时器时钟频率Hz使能定时器中断对以上三种中断方式做解释TIM1 break interrupt and TIM15 global interrupt刹车中断 和 TIM15全局中断TIM1 update interrupt and TIM16 global interrupt 计数器溢出TIM1 trigger and commutation interrupts and TIM17 global interrupt 定时器作为从模式时接收到外部触发信号时触发TIM1 capture compare interrupt 输入捕获检测外部信号我们需要达到定时效果所以选TIM1 update interrupt and TIM16 global interrupt选项这里我们的定时器就配置好了将其他设置配置好之后进入Keil点击tim.c文件可以看到我们在CubeMx中配置的TIM1主函数中我们需要使能定时器指令为 HAL_TIM_Base_Start_IT(htim1);在Drivers/STM32G4xx_HAL_Dricer文件夹下点击 stm32g4xx_hal_tim.c文件在图片位置找到该弱定义的回调函数使用方法void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){if(htim-Instance TIM1){//填写你想在每一个10ms结束时想做的事情例如我的if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1) 0)//每10ms检测按键按下{startl;//变量加1}if(startl200)//200*10ms后也就是2秒执行指令{lcd_middledisplay(Line1, YES);}}}到现在就完成了定时器定时执行某项任务的操作请继续加油学习
基于定时器的按键计时操作
原理基于STM32G431RBTX系列单片机HAL库设置定时器定时时间为10ms每10ms按键检测当按键按下时变量加1 当变量为200时按键按下时间为2S,触发其余操作。HAL库配置定时器使能定时器1配置预分频值和自动重装载寄存器预分频(PCS)和自动重装载寄存器(ARR)的配置依照该公式定时时间秒(PSC1)×(ARR1)/定时器时钟频率Hz使能定时器中断对以上三种中断方式做解释TIM1 break interrupt and TIM15 global interrupt刹车中断 和 TIM15全局中断TIM1 update interrupt and TIM16 global interrupt 计数器溢出TIM1 trigger and commutation interrupts and TIM17 global interrupt 定时器作为从模式时接收到外部触发信号时触发TIM1 capture compare interrupt 输入捕获检测外部信号我们需要达到定时效果所以选TIM1 update interrupt and TIM16 global interrupt选项这里我们的定时器就配置好了将其他设置配置好之后进入Keil点击tim.c文件可以看到我们在CubeMx中配置的TIM1主函数中我们需要使能定时器指令为 HAL_TIM_Base_Start_IT(htim1);在Drivers/STM32G4xx_HAL_Dricer文件夹下点击 stm32g4xx_hal_tim.c文件在图片位置找到该弱定义的回调函数使用方法void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){if(htim-Instance TIM1){//填写你想在每一个10ms结束时想做的事情例如我的if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1) 0)//每10ms检测按键按下{startl;//变量加1}if(startl200)//200*10ms后也就是2秒执行指令{lcd_middledisplay(Line1, YES);}}}到现在就完成了定时器定时执行某项任务的操作请继续加油学习