当前位置: 首页 > news >正文

基于定时器的按键计时操作

原理:基于STM32G431RBTX系列单片机,HAL库设置定时器定时时间为10ms,每10ms按键检测,当按键按下时变量加1 ,当变量为200时,按键按下时间为2S,触发其余操作。

HAL库配置

定时器

使能定时器1

配置预分频值和自动重装载寄存器

预分频(PCS)和自动重装载寄存器(ARR)的配置依照该公式

定时时间(秒)=(PSC+1)×(ARR+1)​/定时器时钟频率(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(startl>=200)//200*10ms后,也就是2秒,执行指令
{
lcd_middledisplay(Line1, "YES");
}
}
}

到现在就完成了定时器定时执行某项任务的操作,请继续加油学习

http://www.cnnetsun.cn/news/1359721.html

相关文章:

  • 科研党收藏!更贴合论文写作全流程的降AIGC网站,千笔·专业降AI率智能体 VS WPS AI
  • 动态住宅IP在跨境业务中的技术价值与实践指南
  • AF555 α-银环蛇D素,AF555-α-BTX荧光标记的光谱特性
  • Git误操作急救手册大纲,一招在手走遍天下
  • 被查出AI率不要慌!2026免费毕业论文去痕神器盘点
  • 【JAVA 运算】
  • 消息中间件RabbitMQ04:路由模式+死信队列的应用实践模板
  • 腾讯面完了,AI Agent真的好颠
  • RK3588 OpenClaw 定时任务踩坑与守护进程方案
  • 金仓数据库 SQL 防火墙实战:内核层防注入,配置 / 调优 / 审计全代码解析
  • 5 万行 Rust 代码重塑 AI Agent:SkillLite 从 Python 到 Rust 的架构演进与选型复盘
  • 第4篇:中文语言 华夏本源语言——极简语法大全
  • 什么是偶极矩?
  • java基础学习3(数据类型转换、运算符)
  • CentOS Stream 8配置DNS
  • PrivescCheck与渗透测试:如何集成到红队工作流程中
  • JAVA SE1(第四章:循环)
  • gtsummary进阶技巧:自定义表格样式与统计方法全攻略
  • Apache NuttX文件系统实战:FAT、ROMFS、NFS等12种文件系统详解
  • 小米Yi摄像头变废为宝:yi-hack-v3固件高级功能实战教程 [特殊字符]
  • Ink/Stitch十字绣助手完全教程:从图案到成品
  • Spec Workflow MCP深度解析:如何实现规范驱动的智能开发流程
  • 如何高效使用ML Workspace进行机器学习项目开发:终极指南
  • Kiali与OpenShift深度集成:企业级服务网格管理的完美解决方案
  • 终极Windows权限提升指南:15种本地提权漏洞深度解析
  • 【C++98 智能指针1 auto_ptr的原理及代码案例】已弃用!!
  • 【C++11 之强类型枚举enum class/struct 基本结构及应用场景】了解在enum基础上增加了什么
  • 【openbmc4】gpio sgpio
  • ImageOptim-CLI性能优化技巧:如何设置批处理大小和并行处理
  • Modern-CPP-Programming:终极现代C++编程课程完全指南