当我用串口软件向430单片机flash中写入10时(假设理解成10秒钟),然后再把10从flash中取出来。但问题出现了,按理说写入flash的数据10两个字节应该被写入0x1080和0x1081两个地址了,读出数据也是从0x1080开始读出,但现在我的目的是:比如我把10要写到flash segA的0x1080-0x1085这6个地址,没有数据的地址写0,但要保证读出来的数据就是10,请问该怎么写入
10是1个字节,没有说明编译器认为10是十进制数,把10要写到flash segA的0x1080-0x1085这6个地址,可以用数组,例如,uint8_t test_buffer[6] = {10,0,0,0,0,0};
写入可以用指针,类似这样:
for ( uint8_t i = 0; i < 6; i++)
{
*flash_ptr++ = *test_buffer++;
}
写入函数可以这样:void flash_writebuf(uint8_t *flash_ptr,uint8_t *buffer,uint8_t len);
起始我也是这么写的
for (i=0; i<6; i++)
{data=(unsigned char *)0x1080;
for(i=0;i<6;i++)
{WorkTime=string_to_int(WorkTimeptr);
这是读出来的函数,读出来不就不等于10了吗
如果发500的话,接收到的应该是'5','0','0',这个我也不确定,实践出真知,试试就知道;
如果1个Flash地址只能存8位的话,当要存储500这个十进制数到FLASH仍然需要两个地址空间。
欢迎光临 烽火社区 (http://bbs.cnecport.com/) | Powered by Discuz! X3.2 |