表驱动法在STM32中的应用( 二 )

函数映射表
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中的应用】

推荐阅读