我有一个vectorx [8]并且我想将它的值保存在XMEGA的EEPROM中,因为这就是我所做的::
............................
int16_t vec1[8];
int16_t vec2[8];
int16_t vec3[8];
int i = 0, j =1;
for ( i =0 ; i<8; i++){ // ini
vec1[i] = 23500;
vec2[i] = 20000;
vec3[i] = 20000;
}
for ( i =0; i<8 ; i++) {
eeprom_update_word (( uint16_t *)j++, vec1[i]);
eeprom_update_word (( uint16_t *)j++, vec2[i]);
eeprom_update_word (( uint16_t *)j++, vec3[i]);
}
现在,当我尝试使用以下方法使用保存的值时: ................................
int16_t tempX[8];
int j =2 ;
for ( i = 0 ; i < NUMBEROFSENSORS ; i++ ){
tempX[i] = (int16_t) eeprom_read_word(j);
j= j+3; // reading only vec1
printf(" j read Value is : %d \n",(int16_t)tempX[i]);
}
我得到-13158
而不是23500
,所以我的问题是我在这里做错了什么?
将K改为某一点我得到了这个输出:
read Value is : 2627
读取值为:2714 读取值为:2714 读取值为:2714 读取值为:23450 读取值为:-3584 读取值为:31744 读取值为:11008
答案 0 :(得分:2)
将j
定义为uint16_t * j
。然后++
操作将使用2而不是1正确地增加它。并且您不需要强制转换:eeprom_update_word (j++, vec1[i])
。