开封网站设计,零基础网络工程师培训,自己做音乐网站挣钱吗,关于网站设计的书籍目录
一、嵌入式中的映射表是什么#xff1f;
二、映射表在串口数据解析中的应用
1. 数据结构
2. 指令、函数映射表 3. 串口解析函数实现
三、映射表在UI设计中的应用
1. 数据结构
2. 函数映射表
3. 定义两个变量保存当前场景和上一个场景
4. 按下Up按键 跳转到指定场…目录
一、嵌入式中的映射表是什么
二、映射表在串口数据解析中的应用
1. 数据结构
2. 指令、函数映射表 3. 串口解析函数实现
三、映射表在UI设计中的应用
1. 数据结构
2. 函数映射表
3. 定义两个变量保存当前场景和上一个场景
4. 按下Up按键 跳转到指定场景current_stage的值根据映射表改变
5. 场景改变后 根据映射表执行相应的函数Handler
(*︶)创作不易期待你们的 点赞、收藏和评论喔。 一、嵌入式中的映射表是什么 在嵌入式系统开发中映射表Lookup table是一种常见的数据结构用于将输入值通常是一个或多个离散的输入映射到对应的输出值。它是一种预先计算和存储的数据表格可以快速查找和获取对应的输出值而无需进行复杂的计算。 映射表通常以数组或者哈希表的形式存储其中输入值被用作索引或关键字而与之对应的输出值存储在相应的位置上。当系统需要根据给定的输入值获取对应的输出时只需通过查询映射表即可获得结果无需进行繁琐的计算过程。 在嵌入式系统中映射表常用于优化算法、信号处理、数据转换等场景。通过使用映射表可以提高系统响应速度、降低功耗并且减少代码的复杂性。 需要注意的是映射表的设计和填充要根据具体应用场景来进行确保映射表能够准确地满足系统需求并且占用的内存空间不超过系统的限制。此外在使用映射表时还需要考虑数据的精度以及表格的更新机制以保证系统的准确性和可靠性。 二、映射表在串口数据解析中的应用
1. 数据结构
typedef struct
{char CMD[CMDLen];unsigned char (*cmd_operate)(char *data);
}Usart_Tab;
2. 指令、函数映射表 static const Usart_Tab InstructionList[CMDMax]
{{PWON,PowOn},{PWOFF,PowOff},{HDCP,HdcpOnOff},{/V,QueryKaVersion},{EDIDUpgrade,UpdataEDID},{Psave,Psave},{Precall,Precall},{Pclear,Pclear},
}; 3. 串口解析函数实现 unsigned char DataAnalysis(char *buf)
{unsigned char i,Result;char *NEXTNULL;for(i0;iCMDMax;i){NEXTStrCmp(buf,(char*)InstructionList[i].CMD);if(NEXT!NULL){usartfuncpInstructionList[i].cmd_operate;Result(*usartfuncp)(NEXT);}}return Result;
} 三、映射表在UI设计中的应用
1. 数据结构
typedef enum
{stage10,stage2,stage3,stage4,stage5,stage6,stage7,stage8,stage9,
}SCENE; typedef struct {void (*current_operate)(); //当前场景的处理函数SCENE Index; //当前场景的标签SCENE Up; //按下Up键跳转的场景SCENE Down; //按下Down键跳转的场景SCENE Right; //按下Left键跳转的场景SCENE Left; //按下Right键跳转的场景
}STAGE_TAB;
2. 函数映射表 STAGE_TAB stage_tab[]{#. operate Index Up Down Left Right {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},
};3. 定义两个变量保存当前场景和上一个场景
char current_stagestage1;
char prev_stagecurrent_stage;
4. 按下Up按键 跳转到指定场景current_stage的值根据映射表改变 current_stage stage_tab[current_stage].Up;
5. 场景改变后 根据映射表执行相应的函数Handler if(current_stage!prev_stage)
{stage_tab[current_stage].current_operate();prev_stagecurrent_stage;
} (*︶)创作不易期待你们的 点赞、收藏和评论喔。