一些背景信息; 我必须连接一个具有 I2C 接口(interface)的 EEprom。我想在内存中保存一个 float 数组并读回。我想尽快完成。目前我有以下解决方案,效果很好。
float a[5];
unsigned char* p = (unsigned char *)a;
for ( i = 2; i < 22; i++)
{
data [ i ] = p [ i -2 ];
}
twi_master_trans(
if ( twi_master_trans ( EEprom_address , data , 22 ,NULL , 0) == false )
{
put_falsh_string("TWI major error1 ");
}
我将每个元素指向内存中的另一个位置。为什么不直接给出我的主数组的起点。我认为应该这样做:
twi_master_trans ( EEprom_address , (unsigned char *)a, 22 ,NULL , 0)
我不明白为什么它不起作用。你能解释一下为什么吗?或者我不明白什么?
这是 twi_master_trans 的定义:
bool twi_master_trans(
unsigned char slave_addr,
unsigned char *tx_data,
unsigned char tx_count,
unsigned char *rx_data,
unsigned char rx_count)
我知道我的问题不是很清楚,但我无法解释得更好。但我试一试。
函数的参数是指向 unsigned char 的指针,我有一个必须发送到那里的 float 数组。指向 float 组中起始字节的指针应该是我们传递给函数的内容。
谢谢你, 我是菜鸟,抱歉,如果这是一个愚蠢的问题。
最佳答案
在第一个片段中, float 据从 char 数组的字节 2 开始。在第二个片段中,它从字节 0 开始。
看起来缺少的两个字节是一个有效而另一个无效的关键。
关于c - 如何将 float 数组传递给以 unsigned char 指针为参数的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24474531/