本帖最后由 ltby00 于 2017-8-31 10:27 编辑
#define data1 4
#define data2 196
#define ADDR1 0x00E000
u8 funa(void)
{
u8 i, j , bufa[(data1 + data2 ) / 8 + ((data1 + data2 ) % 8 ? 1:0)]; //
SPI_FLASH_Read(bufa, ADDR1, (data1 + data2 ) / 8 + ((data1 + data2 ) % 8 ? 1:0) ); ///读SPI FLASH
for(i=0; i< (data1 + data2 ) / 8 + ((data1 + data2 ) % 8 ? 1:0); i++)
{
for(j=0; j<8; j++){
if(i<= data1 /8 && j< data1 ) continue;
if(bufa & 1<<j) return i*8 +j; ///是 if(bufa & 1<<j) return i*8 +j;
}
}
return 0xfe;
}
看不明白(data1 + data2 ) / 8 + ((data1 + data2 ) % 8 ? 1:0) 应该指向FLASH芯片内的地址, 但是表达的什么 ?
请教下大家!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
经你一提示想明白了,估计之前的数据的形式是bit形式,供data1+data2个bit位,但是在flash存储里是按照字节存储的,所以在读取的时候是要按照字节来读取出来,但是这里面就要用到取整以后,只要余数不为0,则就需要多一个字节来存储尾数的数据。这样就能解释清楚了。
补充了下代码!
补充了下代码!
我还需要点时间消化, 我在看看
一周热门 更多>