找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3385|回复: 0
打印 上一主题 下一主题
收起左侧

STM32F1xx使用中出现的一个Hardfault错误

[复制链接]
跳转到指定楼层
楼主
ID:60076 发表于 2014-5-7 03:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现象:

     日前,在使用STM32F103C8时,分boot区和application区,以便进行升级,boot配置为48M,application配置为66M,发现在环境温度上升到60多度后,产生了Hardfault错误。

分析:怀疑是取指问题。

定位:1、将application配置为48M后,问题消失。

2、配置boot、application均为66M,问题重现。

3、再重新配置为24M,问题消失。

4、去掉boot,仅留application,一直配置为24M\48M\66M,发现在66M时问题重现。

5、怀疑为系统频率PLL配置为题。

6、对源代码的系统时钟配置函数进行检查。AHB,APH1,APH2对照手册,为发现问题,查询到

   FLASH->ACR ,发现手册里要求0~24M为0等待;24~48M为1个等待状态;48M为两个等待状态。

发现代码的等待状态为1个等待状态,重新配置:

  if (HSE_VALUE <= 24000000)
{
      FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_0;
}
else
{
      FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_1;

}

7、验证,发现问题解决。



另外一个问题,从application跳转到boot后,进行application升级后,发现ADC等外设访问出错:

问题所在:在进行软件跳转前需要把ADC\SPI等外设disable掉。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表