欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

stm32 flash 封存数据

更新时间: 2014-01-05 03:15:19 责任编辑: Author_N1

 

stm32 flash 保存数据
我用stm32的flash保存数据,在擦除的过程中,代码执行到这句就停了status = FLASH_WaitForLastOperation(ProgramTimeout);好想调用函数WaitForLastOperation(ProgramTimeout)都没有成功,因为连这个函数的第一句话都进不去。请大家帮忙指导指导。
--参考方法--


FLASH_Unlock();
    
    /* Clear All pending flags */
    FLASH_ClearFlag(FLASH_FLAG_BSY 
--参考方法--
 FLASH_FLAG_EOP 
--参考方法--
 FLASH_FLAG_PGERR 
--参考方法--
 FLASH_FLAG_WRPRTERR);
    
    FLASHStatus = FLASH_ErasePage((uint32_t)&Storage);


我用库的,这样没问题
--参考方法--
#define FLASHADDRSTART 0x0800FC00 //63K
#define FLASHADDREND 0x08010000 //64K
//定义页的大小
#ifdef  STM32F10X_HD //大容量产品 flash>=256K
#define FLASH_PAGE_SIZE    ((u16)0x800)//2K
#elif STMF10X_LD // 小中容量产品, flash <256K
#define FLASH_PAGE_SIZE  ((u16)0x400)//1K

vu32 NbrOfPage = 0x00;
u32 EraseCounter = 0x00, Address = 0x00;
volatile FLASH_Status FLASHStatus;

boolen writeFlash(UCHAR* str,UINT len)
{
FLASH_Unlock();
NbrOfPage = ( FLASHADDREND - FLASHADDRSTART ) / FLASH_PAGE_SIZE;
FLASH_ClearFlag(FLASH_FLAG_BSY 
--参考方法--
 FLASH_FLAG_EOP 
--参考方法--
 FLASH_FLAG_PGERR 
--参考方法--
 FLASH_FLAG_WRPRTERR);
FLASHStatus = FLASH_COMPLETE;
for(EraseCounter = 0; (EraseCounter < NbrOfPage) && (FLASHStatus == FLASH_COMPLETE); EraseCounter++)
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:15:19
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/20187/
本文WWW.DOC100.NET DOC100.NET版权所有。