我正在使用固件,试图建立一个独立于设备的库。该库使用I2C进行通信,这是一种简单而通用的协议,适用于那些不知道它是什么的人。 I2C使用I" m关注,读取和写入两个函数。在不同的微控制器上使用I2C主要是针对每个内核的不同,我正在寻找一种方法来传递函数,以便它能够以一致的方式使用它们。
如何创建用户可以将变量设置为函数的结构。 类似的东西:
typedef struct I2C_setup{
function read = device specific read function;
function write = device specific write function;
}
然后我可以打电话
I2C_setup I2C;
此后
(return type) RegisterRead = I2C.read(register address);
我会使用函数指针还是......什么?
答案 0 :(得分:1)
函数指针是个好主意。您可以将原型定义为
typedef struct I2C_setup{
(*I2C_Read_Func)(uint32_t devAddr, uint32_t subAddr, uint8_t *pData, size_t lenght);
}
你的实际功能
I2C_Read(uint32_t devAddr, uint32_t subAddr, uint8_t *pData, size_t lenght);
您可以通过
分配I2C_setup I2C;
I2C.I2C_Read_Func = I2C_Read;