前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >多按键多界面二维数组表驱动设计

多按键多界面二维数组表驱动设计

作者头像
杨源鑫
发布2022-03-24 09:09:04
4060
发布2022-03-24 09:09:04
举报
文章被收录于专栏:嵌入式开发圈

键盘是我们经常能在嵌入式产品上看到的输入设备之一。

一般情况下,键盘通常会有指定的按键码。根据用户按下的按键来执行一些用户想要执行的功能。因此,这种模式就可以通过switch语句来进行处理。但是,如果当我们设计的应用程序上拥有很多个界面的时候,有些按键只有在特定的界面上才生效的情况下,这时候使用函数指针则会比switch语句更为优雅。在这种情况下,推荐使用函数指针的二维数组的形式来实现,以下是一个很好的例子:

代码语言:javascript
复制
#define PAGE_NUMBER 12
#define KEY_NUMBER  5

int function_f1_op(void);
int function_f2_op(void);
int function_f3_op(void);
int function_f4_op(void);
...
int function_null_op(void);
int function_menu_op(void);
/*跳转表定义*/
static int (*const jump_table[page][key])(void) = 
{
    {function_f1_op, function_f2_op, function_f3_op, function_f4_op},
    {function_f5_op, function_f6_op, function_f7_op, function_f8_op},
 ...
    {function_esc_op, function_enter_op, function_menu_op ..., function_tab_op}
};
/*按键处理函数*/
int key_handler(uint8_t page,uint8_t key)
{
    assert (key  < KEY_NUMBER);
    assert( page < PAGE_NUMBER);
    return (*jump_table[page][key])(); 
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式应用研究院 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档