函数映射表
STAGE_TAB stage_tab[] = {//operateIndexUpDownLeftRight{Stage1_Handler, stage1, stage4, stage7, stage3, stage2},{Stage2_Handler, stage2, stage5, stage8, stage1, stage3},{Stage3_Handler, stage3, stage6, stage9, stage2, stage1},{Stage4_Handler, stage4, stage7, stage1, stage6, stage5},{Stage5_Handler, stage5, stage8, stage2, stage4, stage6},{Stage6_Handler, stage6, stage9, stage3, stage5, stage4},{Stage7_Handler, stage7, stage1, stage4, stage9, stage8},{Stage8_Handler, stage8, stage2, stage5, stage7, stage9},{Stage9_Handler, stage9, stage3, stage6, stage8, stage7},};定义两个变量保存当前场景和上一个场景
char current_stage=stage1;char prev_stage=current_stage;按下Up按键 跳转到指定场景current_stage的值根据映射表改变
current_stage =stage_tab[current_stage].Up;场景改变后 根据映射表执行相应的函数Handler
if(current_stage!=prev_stage){stage_tab[current_stage].current_operate();prev_stage=current_stage;}这是一个简单的菜单操作,结合了表驱动法 。在MCU中表驱动法有很多很多用处,本文的例子已经过多了,如果在通勤路上用手机看到这里,已经很难了 。关于UI操作 , 大神figght在github开源了zBitsView仓库,单片机实现屏幕界面,多层菜单 。很牛,很优秀的代码 , 有兴趣的同学可以学习一下 。https://github.com/figght/zBitsView
4、后记这篇文章我也看到网上一遍表驱动法的后总结的笔记,可能也有很多同学和我一样,在自己的项目中熟练应用了这种“技巧”,但今天才知道名字:表驱动法 。
这篇文章多数都是代码示例,实在因为表驱动法大家应该都熟练应用了,这篇文章算是总结一下吧 。
学习知识 , 可以像在学校从概念一点点学习,也可以在工作中慢慢积累 , 然后总结记录,回归最初的概念,丰富自己的知识框架 。
祝大家变得更强!
点击查看:C语言进阶专辑
【表驱动法在STM32中的应用】
推荐阅读
- 航海王热血航线欢乐海钓玩法思路是什么
- 迪奥小A瓶精华使用方法_迪奥小A瓶使用顺序
- dnf极限祭坛的木乃伊怎么打不死(dnf极限祭坛打法)
- 华为开发者大会2022:HMS Core 3D建模服务再升级,万物皆可驱动
- shardingsphere-jdbc 水平分表学习记录
- 奇迹暖暖心愿之门活动玩法介绍
- 境界:斩魂之刃伙伴获取方法介绍
- 境界:斩魂之刃快速升级方法是什么
- 吃完火锅衣服上总有一股味道,用哪种方法除味更好?
- cf怎么跳箱子,五种cf跳箱子的方法(cf交易箱子打开不见了)