初级会员

- 积分
- 95
- 金钱
- 95
- 注册时间
- 2015-12-28
- 在线时间
- 17 小时
|
3金钱
const u8 TEXT_Buffer[2]={1,2};
#define SIZE sizeof(TEXT_Buffer) //数组长度
#define FLASH_SAVE_ADDR 0X08070000 //设置FLASH 保存地址(必须为偶数,且其值要大于本代码所占用FLASH的大小+0X08000000)
int main(void)
{
u8 key;
u8 datatemp[SIZE];
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
KEY_Init(); //初始化按键
while(1)
{
key=KEY_Scan(0);
if(key==KEY3_PRES) //KEY1按下,写入STM32 FLASH
{
STMFLASH_Write(FLASH_SAVE_ADDR,(u16*)TEXT_Buffer,SIZE);
printf("%s","数据写入完毕");
}
if(key==KEY4_PRES) //KEY0按下,读取字符串并显示
{
STMFLASH_Read(FLASH_SAVE_ADDR,(u16*)datatemp,SIZE);
printf("%d",(u16*)datatemp);
}
delay_ms(10);
}
}请问为什么我仿真的时候0x08070000的地址里的数据都改成我要的数了,但是printf出来是35 33 36 38 37 34 38 34 30 。。根本不是1和2 ,请问是不是printf的不对的,怎么修改?谢谢啦
|
最佳答案
查看完整内容[请看2#楼]
对了的。你写两个字节分别写的1和2,即0x01和0x02。
而你读是一次性读的两个字节,显示也是显示的两个字节数的大小。
而这两个字节数的存放是 01 02。其大小就是0x0201,即513。(大小端模式你自己看看)
|