c – 从EEPROM读取
发布时间:2020-12-16 07:12:32 所属栏目:百科 来源:网络整理
导读:说我有3个向量: int16_t v1[8];int16_t v2[8];int16_t v3[8];int8_t lock = 0; 我想将数组的值保存在EEPROM中.为此,这就是我所做的: int i = 0; uint16_t * j = (uint16_t*) 2 ;short ratio=0; for ( i =0; i8;i++){ v1[i] = 22500; v2[i] = 10500; v3[i]
说我有3个向量:
int16_t v1[8]; int16_t v2[8]; int16_t v3[8]; int8_t lock = 0; 我想将数组的值保存在EEPROM中.为此,这就是我所做的: int i = 0; uint16_t * j = (uint16_t*) 2 ; short ratio=0; for ( i =0; i<8;i++){ v1[i] = 22500; v2[i] = 10500; v3[i] = 20888; } 我想保存以下值: // .startat at the 3rd byte // v1[0]v2[0]v3[0]v1[1]v2[1]v3[1] ----------> v1[7]v2[7]v3[7] for ( i = 0 ; i <8; i++ ){ //printf("j = %d n",j); eeprom_update_word (j++,v1[i]); eeprom_update_word (j++,v2[i]); eeprom_update_word (j++,v3[i]); } 要检查值是否已正确保存,我尝试将它们打印出来,如: for (i=1; i < 26;i++ ){ ratio =(short)eeprom_read_word((uint8_t*)i); printf(" WORD %d %d n",i,ratio); } 我真的不明白输出: WORD 1 -7168 WORD 2 22500 WORD 3 1111 WORD 4 10500 WORD 5 -26583 WORD 6 20888 WORD 7 -7087 WORD 8 22500 WORD 9 1111 WORD 10 10500 WORD 11 -26583 WORD 12 20888 WORD 13 -7087 WORD 14 22500 WORD 15 1111 WORD 16 10500 WORD 17 -26583 WORD 18 20888 WORD 19 -7087 WORD 20 22500 WORD 21 1111 WORD 22 10500 WORD 23 -26583 WORD 24 20888 WORD 25 -7087 知道如何以正确的方式获得这个吗? 我重新开始for循环,输出看起来一半正确! ! : WORD 1 -7168 WORD 2 22500 WORD 3 -4009 WORD 4 22000 WORD 5 9813 WORD 6 21030 WORD 7 -7086 WORD 8 22500 WORD 9 -4009 WORD 10 22000 WORD 11 9813 WORD 12 21030 WORD 13 -7086 WORD 14 22500 WORD 15 -4009 WORD 16 22000 WORD 17 9813 WORD 18 21030 WORD 19 -7086 WORD 20 22500 WORD 21 -4009 WORD 22 22000 WORD 23 9813 WORD 24 21030 WORD 25 -7086 WORD 26 22500 WORD 27 -4009 WORD 28 22000 WORD 29 9813 WORD 30 21030 WORD 31 -7086 WORD 32 22500 WORD 33 -4009 WORD 34 22000 WORD 35 9813 WORD 36 21030 WORD 37 -7086 WORD 38 22500 WORD 39 -4009 WORD 40 22000 WORD 41 9813 WORD 42 21030 WORD 43 -7086 WORD 44 22500 WORD 45 -4009 WORD 46 22000 WORD 47 9813 WORD 48 21030 WORD 49 82 WORD 50 0 WORD 51 0 我不能解释这里发生了什么! **更新** for (i=1; i < 25;i++ ){ ratio =eeprom_read_word(j); printf(" WORD %d %d n",ratio); j = j +2; } 输出现在是: WORD 1 22500 WORD 2 21030 WORD 3 22000 WORD 4 22500 WORD 5 21030 WORD 6 22000 WORD 7 22500 WORD 8 21030 WORD 9 22000 WORD 10 22500 WORD 11 21030 WORD 12 22000 WORD 13 22500 WORD 14 22000 WORD 15 0 WORD 16 0 WORD 17 22500 WORD 18 22000 WORD 19 0 WORD 20 0 WORD 21 22500 WORD 22 22000 WORD 23 0 WORD 24 0 我仍然没有得到0来自哪里? 解决方法
您有24个16位值,总共48个字节,存储在EEPROM中,从地址2开始,最后一个字节存储在地址49.读取这些字节,从地址1开始,您尚未填充.你递增1但每次读取两个字节,对吧?
我建议将i分配为short *类型,因此增量会增加sizeof(short).另外,我会修复该起始地址进行阅读. 哦,对于24个值,循环结束值需要修复. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |