对于arm项目中的显示驱动程序,我想以2D阵列的形式访问缓冲区,以便像这样访问它:
e.g. display_buffer[2][113]=0xff;
要通过I2C将缓冲区写入显示器,我想将整个缓冲区写出来,但需要在它前面加上0x40。
io_write(I2C_0_io, (uint8_t *)buf, 513); //where buf should be 0x40,content, of, display_buffer,...
有没有办法声明display_buffer[4][128]
以便它前面有一个字节和一个指向它的指针?
我试过
uint8_t *_display_buffer = (uint8_t*)513;
uint8_t *display_buffer[4][128]=_display_buffer+1;
但当然编译器认为这不是一个好主意(“初始化程序无效”)
答案 0 :(得分:2)
您需要将_display_buffer
定义为足以容纳2D数组加1个字节的数组,并将display_buffer
定义为指向数组的指针(可以将其作为2D数组索引)而不是一个2D数组:
uint8_t _display_buffer[513] = { 0x40 };
uint8_t (*display_buffer)[128]=(uint8_t (*)[128])(_display_buffer+1);