基本上我有一堆 2 字节整数顺序写入 32 位闪存中。如何将这些作为 int16 数组访问?
我编写了数组而不考虑单词边界。但如果需要,我可以添加填充,以便数组从单词边界开始。
这是我写闪存的代码(基本上它只是将每 4 个字节组合成一个字,然后将该字写入闪存):
for(flash_page = 0; flash_page < protocol_pages; flash_page++){ //loop through all the pages
for(flash_address = 0; flash_address < NUMBER_OF_INSTRUCTIONS_IN_PAGE; flash_address++){ //loop through all the words in the page
for (byte_address = 0; byte_address < 4; byte_address++){ //loop through the byte in each word
buffer_check();
flash_word += buffer[buffer_index] << (8*(3-byte_address));
buffer_index++;
bytes_written++;
if(bytes_written >= data_length)
break;
}
///////Write word here
NVMWriteWord((void*) &(proto_data_addr[flash_page][flash_address]), flash_word);
flash_word = 0;
if(bytes_written >= data_length)
break;
}
if(bytes_written >= data_length)
break;
}
混合到这个字节块中的是首尾相连的 2 字节整数序列。将它们写入闪存后,如何将它们作为数组访问?我是否必须填充数组以便每个单词中有 2 个 int16?
谢谢!