如何向stm32f407板的flash中存入float型

2019-07-20 10:11发布

看过别人写的例程,是将数组存入flash中,如果是将float型数据存入flash中,要怎么存储??
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
溫柔一刀
1楼-- · 2019-07-20 12:55
 精彩回答 2  元偷偷看……
jermy_z
2楼-- · 2019-07-20 13:47
 精彩回答 2  元偷偷看……
cjiamoo
3楼-- · 2019-07-20 15:53
回复【2楼】jermy_z:
---------------------------------
怎么转呢?有没有例子,感激不尽呀!
cjiamoo
4楼-- · 2019-07-20 21:04
 精彩回答 2  元偷偷看……
muniao
5楼-- · 2019-07-20 22:30
直接写进出,读出来也一样,这不好吗?
用指针 ,直接写进出
cjiamoo
6楼-- · 2019-07-21 02:07
回复【6楼】muniao:
---------------------------------

我用正点原子提供的例程,里面写flash函数如下,如果直接新进去貌似不行。。原例程是写数组进去的。

void STMFLASH_Write(u32 WriteAddr,u32 *pBuffer,u32 NumToWrite)

  FLASH_Status status = FLASH_COMPLETE;
u32 addrx=0;
u32 endaddr=0;
  if(WriteAddr<STM32_FLASH_BASE||WriteAddr%4)return; //非法地址
FLASH_Unlock(); //解锁 
  FLASH_DataCacheCmd(DISABLE);//FLASH擦除期间,必须禁止数据缓存
 
addrx=WriteAddr; //写入的起始地址
endaddr=WriteAddr+NumToWrite*4; //写入的结束地址
if(addrx><0X1FFF0000) //只有主存储区,才需要执行擦除操作!!
{
while(addrx<endaddr) //扫清一切障碍.(对非FFFFFFFF的地方,先擦除)
{
if(STMFLASH_ReadWord(addrx)!=0XFFFFFFFF)//有非0XFFFFFFFF的地方,要擦除这个扇区
{   
status=FLASH_EraseSector(STMFLASH_GetFlashSector(addrx),VoltageRange_3);//VCC=2.7~3.6V之间!!
if(status!=FLASH_COMPLETE)break; //发生错误了
}else addrx+=4;

}
if(status==FLASH_COMPLETE)
{
while(WriteAddr><endaddr)//写数据
{
if(FLASH_ProgramWord(WriteAddr,*pBuffer)!=FLASH_COMPLETE)//写入数据

break; //写入异常
}
WriteAddr+=4;
pBuffer++;

}
  FLASH_DataCacheCmd(ENABLE); //FLASH擦除结束,开启数据缓存
FLASH_Lock();//上锁
}>

一周热门 更多>