我需要分割我的 512 字节数组,我有一个看起来像这样的函数
uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len)
我的数组名为 nandtest,下面的两行代码工作正常。
int8_t nandtest[520] = {0};
CDC_Transmit_FS((uint8_t*)nandtest,512);
但是我需要将字节数组分成两 block 256 字节数组并发送。 当我尝试这样做时:
CDC_Transmit_FS((uint8_t*)nandtest,256);
CDC_Transmit_FS((uint8_t*)nandtest[256],256);
由于第二行,编译器给了我错误:
warning: cast to uint8_t*(aka unsigned char*) from samller interger type 'int8_t'(aka signed char)
如何表示我要从数组的256字节位置开始传输函数的第二行?或者创建两个不同的 256 字节数组是这里唯一的选择?
最佳答案
第一个语句是正确的,但对于第二个语句,您需要使用运算符的地址,因为您的 CDC_Transmit_FS 函数需要缓冲区的地址,但您正在位置 nandtest[256] 处传递值。
CDC_Transmit_FS((uint8_t*)nandtest,256);
与:
相同CDC_Transmit_FS((uint8_t*)&nandtest[0],256);
要传递第二个 256 字节缓冲区,您可以使用以下命令传递 257 字节的地址:
CDC_Transmit_FS((uint8_t*)&nandtest[256],256);
关于c - 如何将 512 字节数组分割成更小的 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53862480/