4426|12

173

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

求大神帮我看看这个问题是真么回事?怎样解决? [复制链接]

大家有没有遇到过这个问题啊,程序在擦除Flash时停在了
HardFault_Handler\
                PROC
                EXPORT  HardFault_Handler          [WEAK]
                B       .
                ENDP
这里,找了好长时间发现地址为0x080x0800018CF,但这个是库函数,怎么解决啊求大神指点啊,做等,急急急~~~~ 11.jpg (278.19 KB, 下载次数: 2)
此帖出自stm32/stm8论坛

最新回复

跑飞后看看堆栈里的函数调用大概可以判断是哪个函数引起的  详情 回复 发表于 2013-6-5 16:25
点赞 关注
 

回复
举报

173

帖子

0

TA的资源

一粒金砂(高级)

沙发
 
图片显示的问题的地方

11.jpg (278.19 KB, 下载次数: 0)

11.jpg
此帖出自stm32/stm8论坛
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
这个问题貌似没遇见过
此帖出自stm32/stm8论坛
 
 

回复

173

帖子

0

TA的资源

一粒金砂(高级)

4
 
版主,在没帮忙看看呗
此帖出自stm32/stm8论坛
 
 
 

回复

4008

帖子

0

TA的资源

版主

5
 
你的地址要和1K对齐,不知道你擦除别的地址有没有问题?

#define FLASH_PAGE_SIZE                1024

volatile FLASH_Status FLASHStatus;

void Flash_Erase(u32 StartAddr,u32 Size)
void Flash_Erase(u32 StartAddr,u32 Size)
{
        u32 Page=Size/FLASH_PAGE_SIZE;
        FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);
        FLASHStatus = FLASH_COMPLETE;
          FLASH_Unlock();
          while ((Page--) && FLASHStatus == FLASH_COMPLETE)
          {
                  FLASHStatus = FLASH_ErasePage(StartAddr);
                StartAddr+=FLASH_PAGE_SIZE;
        }
        if (FLASHStatus != FLASH_COMPLETE)
                while (1);
        FLASH_Lock();
}
此帖出自stm32/stm8论坛
 
 
 

回复

4008

帖子

0

TA的资源

版主

6
 
地址大一点比如0x08010000
此帖出自stm32/stm8论坛

点评

我的擦除地址就是从0x8010000开始的,这个是做的IAP升级时用到的擦除,让我郁闷的是这个跑飞不是经常性的,是有时可以擦除,有时又跑飞了,找了好久也没看到有什么问题,:) :)  详情 回复 发表于 2013-6-5 15:07
 
 
 

回复

173

帖子

0

TA的资源

一粒金砂(高级)

7
 

回复 6楼 huo_hu 的帖子

我的擦除地址就是从0x8010000开始的,这个是做的IAP升级时用到的擦除,让我郁闷的是这个跑飞不是经常性的,是有时可以擦除,有时又跑飞了,找了好久也没看到有什么问题,
此帖出自stm32/stm8论坛
 
 
 

回复

4008

帖子

0

TA的资源

版主

8
 
FLASH_SetLatency(FLASH_Latency_2);
    //开启FLASH预取指功能
    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

这两句有吧?你主频多少
此帖出自stm32/stm8论坛

点评

你刚发的这两句我在时钟初始化中都有,主频用的是72Mhz的主屏,在这发帖之后我把程序里没用的(之间测试时用设的BUF)都给删了,现在擦除好像也没发现这个擦除跑飞的情况,所以比较郁闷。 FLASH_Status 当时截图时忘  详情 回复 发表于 2013-6-5 15:58
版主,你好,我用的是STM32F103VE的片子,Flash是大容量的,擦除一页是2K,之前在网上查找时有人说过是 数组的BUF溢出了,但找了几个BUF好像没发现有溢出。  详情 回复 发表于 2013-6-5 15:51
 
 
 

回复

4008

帖子

0

TA的资源

版主

9
 
截一下出错时的FLASH_Status
此帖出自stm32/stm8论坛
 
 
 

回复

173

帖子

0

TA的资源

一粒金砂(高级)

10
 

回复 8楼 huo_hu 的帖子

版主,你好,我用的是STM32F103VE的片子,Flash是大容量的,擦除一页是2K,之前在网上查找时有人说过是
数组的BUF溢出了,但找了几个BUF好像没发现有溢出。
此帖出自stm32/stm8论坛
 
 
 

回复

173

帖子

0

TA的资源

一粒金砂(高级)

11
 

回复 8楼 huo_hu 的帖子

你刚发的这两句我在时钟初始化中都有,主频用的是72Mhz的主屏,在这发帖之后我把程序里没用的(之间测试时用设的BUF)都给删了,现在擦除好像也没发现这个擦除跑飞的情况,所以比较郁闷。
FLASH_Status  当时截图时忘了这个了,记得好像在查看堆栈时返回的是这个FLASH_COMPLETE值,不清楚这个值对它的影响有哪些
此帖出自stm32/stm8论坛
 
 
 

回复

4008

帖子

0

TA的资源

版主

12
 
跑飞后看看堆栈里的函数调用大概可以判断是哪个函数引起的
此帖出自stm32/stm8论坛

点评

看过跑飞调用的函数,我自己用的是Flash页擦除,使用的是库函数,库函数应该不会有问题吧。 思考分析后 发现是一件比较怪异的事情。 关键在 这个问题不是像一般的程序,有错就不能跑了, 它是有时能跑,有时又跑  详情 回复 发表于 2013-6-6 11:49
 
 
 

回复

173

帖子

0

TA的资源

一粒金砂(高级)

13
 

回复 12楼 huo_hu 的帖子

看过跑飞调用的函数,我自己用的是Flash页擦除,使用的是库函数,库函数应该不会有问题吧。
思考分析后 发现是一件比较怪异的事情。
关键在  这个问题不是像一般的程序,有错就不能跑了, 它是有时能跑,有时又跑飞了,纠结中
。。。。。
此帖出自stm32/stm8论坛
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表