标题: STM32F1xx使用中出现的一个Hardfault错误 [打印本页]

作者: liumei    时间: 2014-5-7 03:29
标题: STM32F1xx使用中出现的一个Hardfault错误
现象:

     日前,在使用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掉。





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1