5280|9

81

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请教哪位大哥:写flash到第二page末尾常现HardFaultException [复制链接]

存储一些数据到flash,做了一个保护机制,几个页面循环写入,每个页面存储48个u8 str[42]的数据, 写到第二page末尾常常会出现HardFaultException,单步跟踪写flash本身没有问题,跳出子函数后不一会就会出现。写到第88笔数据从这个函数退出就会出现
void save_gprs_data(void)
{
    
    ......
    ......
    SaveFlashGprs(Rsp1)    ;//写flash操作
    show_debug ( Rsp1 );
    wm_sprintf ( Rsp1, "save succeed! report_tail:%d,report_head:%   d",report_tail,report_head);
    show_debug(Rsp1 );
    //only save report_tail&report_head
    //flash_param.Param._report_tail=report_tail;
    //flash_param.Param._report_head=report_head;
    //rewrite_param_init(6);    
    
}
此帖出自stm32/stm8论坛

最新回复

HardFaultException是内存出问题了吧。我猜应该是调用函数太深,CSTACK溢出了。  详情 回复 发表于 2011-5-2 16:48
点赞 关注
 

回复
举报

60

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

忘了告诉flash地址,不知道有没有提示作用

#define GprsStartAddr      ((u32)0x0801e000)    //
  #define GprsEndAddr        ((u32)0x0801e800)    //8K
  #define PageSize                         (0x800)    //2k
  #define ShiftSize                         11    //2k
  #define FLASH_SIZE                       (0x80000) /* 512K */

我的软件模拟每十秒调用save_gprs_data,第一页写完自动转到下一页,到了88笔也就是第二页倒数第9笔数据时就出现HardFaultException,几乎每一次都会这样,修改flash起始地址也不管用,恳请大家提示一下?
此帖出自stm32/stm8论坛
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

什么芯片?不同的STM32型号页面大小是不一样的

                                 中小容量的STM32每页Flash大小为1K,大容量的STM32每页Flash大小为2K,你是怎么用的?
此帖出自stm32/stm8论坛
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

4
 

我的芯片 stm103E 页面2K,参考头文件

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

5
 

回复版主:如果只在一个页面循环写入,测试很久都不会出

                                 如果只在一个页面循环写入,写到第48笔自动擦出页面,重新开始,这样测试很久都不会出问题,如果用到多页,软件到第48笔自动擦出下一个页面,结果到第二页比较靠后就出问题了,真是奇怪?
此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

6
 

既然说Flash写入没有问题,又与是哪个页面无关,多数是软件

                                 你试试看,不要考虑多个页面,考虑只有2个页面的情况。
此帖出自stm32/stm8论坛
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

7
 

一个页面只能存储48组数据,现在也仅仅扩到第二页就出问题

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

8
 
这位兄弟:你的问题找到了吗?我的遇到的问题是程序执行到
    FLASHStatus = FLASH_ProgramWord(Address, Data);后,就进入死循环了:
void HardFaultException(void)
{
  /* Go to infinite loop when Hard Fault exception occurs */
  while (1)
  {
  }
}
此帖出自stm32/stm8论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

9
 

我也遇到FLASH 问题

烧入几人WORD后,就陷入了环循环~!

此帖出自stm32/stm8论坛
 
 
 

回复

17

帖子

0

TA的资源

一粒金砂(中级)

10
 
HardFaultException是内存出问题了吧。我猜应该是调用函数太深,CSTACK溢出了。
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表