本帖最后由 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芯片内的地址, 但是表达的什么 ?
请教下大家!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
啥 ? (啷里个啷~~~~)
这个是数组的下标地址,我估计是用来做小数取整的,如果能整除8那就以商为下标。如果不能就强制进一位。类似于小数取整时的只有整数后有小数,就+1或进位。
但是具体为啥这么写,就要看你整个上下文了,这里看不出来。
补充:这个还有就是定义了一个数组,根据Data1和Data2计算需要定义一个多大的数组。
SPI_FLASH_Read(bufa, ADDR1, (data1 + data2 ) / 8 + ((data1 + data2 ) % 8 ? 1:0) ); ///读SPI FLASH
就是从ADDR1开始读取的N个字节数
N和data1 ,data2转换就是(data1 + data2 ) / 8 + ((data1 + data2 ) % 8 ? 1:0)
一周热门 更多>