1实现思想该示例代码旨在在处理类似事务时提供功能映射关系。功能功能不同,但功能结构相同。
通过数组和结构映射函数功能,在函数体内处理数据,实现变量分配,并通过函数指针调用函数。因为结构相似,所以for循环可用于遍历所有映射函数。
修改功能时,只需修改功能,无需更改映射结构,为代码的维护提供了极大的方便。 2示例代码1)实现代码以下代码模拟了AD通道采样和转换映射调用方法。
它只是模拟,没有实际应用价值。您可以根据需要对其进行修改,然后将其移植到您自己的项目中。
下面的代码重要的是结构和思想。有必要向它学习。
#include #include #define uint32_t unsigned int / *此宏的顺序必须与结构RawToVal_Map_t中变量的顺序相对应,否则将报告错误* / #define VAL_SWAP(Ch,Convert){&(Ch .wRawInValue),转换和(Ch.dwInValue))//函数声明void AD_CH1(uint32_t * pRawValue,uint32_t * pValue); void AD_CH2(uint32_t * pRawValue,uint32_t * pValue);无效的AD_CH3(uint32_t_pValue); void AD_CH3(uint32_t_pValue)* uint32_t * pRawValue,* pRawValue,* pRaw * pRawValue,uint32_t * pValue); typedef struct_AD_Ch_t {uint32_t dwInValue; //转换值uint32_t wRawInValue; typedef struct_AD_Ch_t {uint32_t dwInValue; //转换值uint32_t wRawInValue; uint32_t_wRawInValue; Channel_t_t_in,AD_AD_AD_in / AD_D_AD_D_AD_D_AD_AD_AD_AD_CH函数指针typedef void(* RawToVal_t)(uint32_t * pRawValue,uint32_t * pValue); //对应于映射结构typedef的数据数组struct _RawToVal_Map_t {uint32_t * pRawValue; RawToVal_t RawToVal; uint32_t * pValue;} RawToVal_Map_t; / * *数据映射数组/ RawToVal_Map_t MapArray [2] [2] = {//以下映射是一一对应的,可以根据需要交叉映射VAL_SWAP(在AD_1,AD_CH1中),映射到// AD_CH1的通道1,AD_CH1 / /通道2的功能映射到通道2 {VAL_SWAP(in_AD_3,AD_CH3),//通道3的功能映射到通道3 VAL_SWAP(in_AD_4,AD_CH4)//通道4的功能映射到通道4(arg)(arg)(arg)(arg)(int); uint32_t i,j,ch = 1,bCh; RawToVal_Map_t * pMap; for(j = 0; j {for(i = 0; i {pMap =&(MapArray [j] [i])); //指向点映射数组数据的数据(*(pMap-> RawToVal) )(pMap-> pRawValue,pMap-> pValue);函数调用“ f”
Ch%d RawVal是%d。“,ch,*(pMap-> pRawValue)); //打印原始值printf("
Ch%d SwapVal是%d。
" Ch,*(pMap-> pValue)); // //打印专用于变量的转换后的值通道,对于上述打印if(ch {ch ++;} else {ch = 1;}}}返回0;} / *以下四个函数非常简单,它们只进行系数乘法和赋值,实际上可以变成实际的工程计算* / void AD_CH1(uint32_t * pRawValue,uint32_t * pValue){* pRawValue = 1; * pRawValue = * pRawValue * 2; in_AD_1.wRawInValue = * pRawValue; in_AD_1.dwInValue = * pValue;} void AD_CH2(uint32_t * pRawValue,uint32_t * pValue){* pRawValue = 1; * pValue = * pRawValue * 4; in_AD_2.wRawInValue = * pRawValue; in_AD_2.dwInValue = * pValue; void AD_CH uint32_t * pRawValue,uint32_t * pValue){* pRawValue = 1; * pRawValue * pValue = * pValue; * pValue = * pRawValue = * pValue = * pRawValue * 3; win_AD_3; win_AD_Value = * pInValue * 3;(uint32_t * pRawValue, uint32_t * pValue){* pRawValue = 1; * pValue = * pRawValue * 16; in_AD_4.wRawIn Value = * pRawValue; in_AD_4.dwInValue = * pValue;} 2)运行结果摘要今天,我介绍了一种封装structu的方法使用宏重新定义变量和函数入口,以实现函数映射和遍历调用。感兴趣的朋友,快点尝试代码。
如有任何疑问,可以在后台留言。如果18年后重新申请了正式帐户,则文章后将不支持消息功能。
最后,以上是这次的分享。如果您认为这篇文章不错,那么转发和阅读它也是我们不断更新的动力。
猜猜你喜欢它:2020年精选原始纸币摘要protobuf-c的嵌入式平台使用1024G嵌入式资源来送人!包括但不限于C / C ++,MCU,Linux等。在官方帐户聊天界面中回复1024,您可以免费获得它!免责声明:本文内容经21ic授权后发布,版权归原作者所有。
该平台仅提供信息存储服务。本文仅代表作者的个人观点,并不代表该平台的立场。
如果哟。
公司: 深圳市捷比信实业有限公司
电话: 0755-29796190
邮箱: momo@jepsun.com
产品经理: 李经理
QQ: 2215069954
地址: 深圳市宝安区翻身路富源大厦1栋7楼

更多资讯
获取最新公司新闻和行业资料。
- 整合式IF开关矩阵:实现高性能射频系统的关键技术 整合式IF开关矩阵在现代通信系统中的核心作用随着无线通信技术的飞速发展,射频(RF)与中频(IF)信号处理系统的复杂性日益增加。整合式IF开关矩阵作为一种集成化解决方案,正在成为高性能通信设备设计的核心组件。1. 功...
- TVS管是如何实现稳压功能的? TVS管是通过改变其结构和工作原理来实现稳压功能的。TVS管的基本工作原理是利用二极管的单向导电特性,将电路中的电压分成两个部分。其中,一个电压通过二极管,进入到TVS管的阴极,然后从阳极流出;另一个电压则被限制...
- 如何正确选型与使用TO-220大功率电阻?实用指南 TO-220大功率电阻选型要点在实际电路设计中,正确选择TO-220大功率电阻至关重要,直接影响系统的稳定性和寿命。以下为关键选型建议:1. 功率匹配原则应确保所选电阻的额定功率大于实际工作功率的1.5倍以上,以预留足够的余...
- GEMS真空压力开关PS81系列:实现高可靠性与长使用寿命 GEMS真空压力开关PS81系列是专为需要高可靠性和长使用寿命的应用设计的。这款压力开关具有出色的性能和耐用性,能够在各种工业环境中稳定工作。PS81系列特别适用于那些要求频繁动作且需要最小维护的系统。其设计考虑了减...
- 如何高效实现超小封装电容的可靠安装?实用技巧全解析 引言:为何超小封装电容安装挑战大?随着5G通信、智能穿戴设备和微型传感器的发展,电路板空间日益紧张,超小封装电容成为主流选择。然而,其微小尺寸带来的安装难题也日益凸显——从贴装偏差到焊接缺陷,每一个环节都...
- 如何正确使用与维护SMFF1206 P800~功率电阻?实用技巧分享 SMFF1206 P800~功率电阻的正确使用与维护策略尽管SMFF1206 P800~功率电阻具有出色的电气性能和耐用性,但在实际应用中若操作不当,仍可能导致失效、发热异常甚至引发安全隐患。以下从安装、设计到维护全方位提供专业建议。1. PC...
- 单输出闩锁电路的原理、实现与工程实践 单输出闩锁电路的原理、实现与工程实践单输出闩锁电路(Single Output Latch Circuit)是一种仅提供单一输出端(Q)的存储单元,相较于互补输出电路更为简洁,适用于对资源占用敏感或仅需单一状态输出的系统。尽管牺牲了互补输...
- PSDB系列功率电感器:实现高效能与紧凑设计的完美结合 PSDB系列功率电感器的技术亮点PSDB系列是屏蔽贴片功率电感器中的高端型号,特别针对高密度、高频率开关电源应用而设计。该系列产品在保持小体积的同时,实现了更高的电感精度与更低的直流电阻(DCR),显著提升电源转换效...
- PCIe数据包交换器核心技术解析:实现高速数据传输的关键 PCIe数据包交换器的核心作用与技术优势随着数据中心、高性能计算(HPC)和人工智能(AI)应用的快速发展,对数据传输效率的要求日益提高。PCIe数据包交换器作为连接多个设备与主机之间的核心组件,正在发挥越来越重要的作...
- HELI2 RGB 3mm LED灯珠实战指南:如何实现多色动态灯光效果 掌握HELI2 RGB 3mm LED灯珠的编程与控制技巧HELI2 RGB 3mm LED灯珠不仅具备出色的光学性能,更支持多种控制方式,是实现创意灯光项目的理想选择。本文将详细介绍其实现多色动态效果的技术路径。硬件连接方式建议使用共阴极(Commo...
- ALPS编码器与PLC通信技术详解:实现高精度位置控制的实践方案 ALPS编码器与PLC通信技术详解在现代自动化控制系统中,位置反馈是实现精准控制的关键环节。ALPS编码器作为高精度、高可靠性的旋转或线性位移传感器,广泛应用于工业机器人、数控机床、传送带等设备中。而可编程逻辑控制器...
- 深入解析分立组件功能数组的设计模式与最佳实践 分立组件功能数组的设计哲学与工程实践分立组件功能数组不仅是一种代码组织方式,更是一种面向可扩展系统的架构思想。其本质是将“行为”与“结构”分离,使组件具备更强的适应能力与演化能力。1. 功能数组的标准化定...
- 如何正确选择与使用TR50 TO-220 50W与TR20 TO-220 20W功率电阻?实用技巧全解析 功率电阻选型与使用实战指南:以TR50 TO-220 50W与TR20 TO-220 20W为例在现代电子系统中,功率电阻不仅是能量消耗的载体,更是保障电路安全与稳定的核心组件。面对众多型号,如何准确选择适合的功率电阻?本文结合实际工程经验...
- 绿松石开关ASQ16418:融合自然之美与实用功能 绿松石开关ASQ16418是一款结合了实用性和美观性的优秀产品。这款开关在设计时充分考虑到了用户的实际需求与审美偏好,采用了优质材料制作而成,确保了产品的耐用性和稳定性。ASQ16418的外观设计灵感来源于自然界的绿松石,...
- 射频同轴连接器的类型与应用解析:从基础到实际部署 射频同轴连接器的基本概念射频同轴连接器是用于传输射频信号的关键电子元件,广泛应用于通信、广播、雷达、测试测量和无线网络等领域。其核心功能是在高频信号传输中保持阻抗匹配、降低信号损耗,并具备良好的屏蔽性...
- 美观实用的倒顺开关:结合功能性与设计感 美观实用的倒顺开关是一种结合了功能性与设计感的产品,被广泛应用于各种机械设备的控制环节。这类开关通过简单地切换位置来控制电机的正转或反转,操作简便且直观。在设计上,现代的倒顺开关更加注重外观的美观性与...
- 电流感应贴片电阻器与PSoC可编程片上系统协同设计:实现高精度实时监测 引言在现代电子系统中,精确的电流监测对于设备安全、能效优化和故障预警至关重要。电流感应贴片电阻器(CS系列)与可编程片上系统(PSoC)的结合,为智能电源管理提供了高效、紧凑且灵活的解决方案。1. 电流感应贴片电...
- K8.0系列单开:简约设计与实用功能的完美结合 墙壁开关插座作为日常生活中不可或缺的一部分,其设计与功能直接影响到我们的居住体验。以K8.0系列单开为例,这款产品不仅在外观设计上追求简约而不失时尚感,还注重实用性和耐用性。该系列采用优质PC材料制成,具有良...
- 欧璐O-墙壁开关:简约设计与实用功能的完美结合 欧璐O-墙壁开关是一款结合了实用性和设计感的产品,特别适合现代家居使用。这款开关设计为一开多三孔单的设计模式,意味着一个开关可以控制多个电器的电源,不仅节省了安装空间,还极大地提升了使用的便捷性。其外观简...
- IO扩充器原理详解:如何实现高效外设扩展与数据传输 IO扩充器原理详解:如何实现高效外设扩展与数据传输在现代嵌入式系统和工业自动化领域,设备对外部输入输出(IO)接口的需求日益增长。为解决这一问题,IO扩充器应运而生。它是一种能够将有限的主控芯片IO引脚扩展为更多...