请问 就是我想给两个地址写数据 然后就会有一个乱码请问怎么回事
const u8 TEXT_Buffer[]={"STM32 FLASH TEST"};
const u8 TEXT_Buffer1[] = {"helloword"};
#define FLASH_SAVE_ADDR 0X08020000
#define FLASH_SAVE_ADDR1 0X08024000
STMFLASH_Write(0X08004000,(u16*)TEXT_Buffer,sizeof(TEXT_Buffer));
delay_ms(2000);
STMFLASH_Write(0X08006000,(u16*)TEXT_Buffer1,sizeof(TEXT_Buffer1));
delay_ms(2000);
STMFLASH_Read(FLASH_SAVE_ADDR,(u16*)datatemp,sizeof(datatemp));
delay_ms(2000);
STMFLASH_Read(FLASH_SAVE_ADDR1,(u16*)datatemp1,sizeof(datatemp1));
while(1)
{
LED1 =!LED1;
delay_ms(500);
//TEST();
u2_printf("%s
",datatemp);
delay_ms(1000);
u2_printf("%s
",datatemp1);
//delay_ms(1000);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
建议买个逻辑分析仪,20多块钱,但非常实用(示波器太贵了)
STM32FLASH操作的地址必须是16位的地址指针然后数据也必须是16位的数据(所以pbuff只要声明为16位的就好了,像你这样子也是可以的,这些都无所谓,只要写入的数据是16位就好了)我是自己看手册写的FLASH函数,没用原子哥的,
但我估计原子哥的第二个形参,就是sizeof那个形参是表示你要写入的数据的个数,也就是有几个16位数据要写入
所以这里,你得算好,不能多,多了说不定或数组越界,少了又写不完整,建议还是仿真以下,看看到底sizeof得出的结果是多少
然后建议你去看一下手册《STM32F10x闪存编程参考手册》官方手册
一周热门 更多>