C语句看不明白,请教!

2019-12-24 18:38发布

本帖最后由 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芯片内的地址, 但是表达的什么 ?
 请教下大家!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
helloshi
1楼-- · 2019-12-24 20:50
打他1,打他2 需要多少鼻涕
ltby00
2楼-- · 2019-12-24 21:12
helloshi 发表于 2017-8-31 10:05
打他1,打他2 需要多少鼻涕

  啥 ?  (啷里个啷~~~~)
helloshi
3楼-- · 2019-12-24 23:18
额,data1,data2表示位
longwu537
4楼-- · 2019-12-25 04:00
本帖最后由 longwu537 于 2017-8-31 10:12 编辑

这个是数组的下标地址,我估计是用来做小数取整的,如果能整除8那就以商为下标。如果不能就强制进一位。类似于小数取整时的只有整数后有小数,就+1或进位。
但是具体为啥这么写,就要看你整个上下文了,这里看不出来。

补充:这个还有就是定义了一个数组,根据Data1和Data2计算需要定义一个多大的数组。
gujiamao_love
5楼-- · 2019-12-25 06:14
 精彩回答 2  元偷偷看……
jiege0119
6楼-- · 2019-12-25 08:59
data1 ,data2代表的是bit数;

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)

一周热门 更多>