打印
[其它]

FAQ 0107其他M3内核MCU的库和AT32 pack造成hardfault

[复制链接]
459|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 ArterySW 于 2021-4-22 21:09 编辑

其他M3内核MCU的库和AT32 pack造成hardfault

Questions使用其他M3内核MCU的库,AT32的pack文件,程序会进入hardfault?
Answer
客户程序进hardfault,是由于客户使用其他M3内核MCU的库,pack却选择的AT32并开启FPU功能。而其他M3内核MCU的库并不支持FPU功能。以下两种方式任选其一可以解决问题。
解法1:关闭FPU功能,如下图:

解法2:在其他M3内核MCU的库文件“system_xxxxxxxxx.c”的库函数“SystemInit”里增加FPU相关宏定义,如下粗体部分所示:
void SystemInit(void)
{
#if defined (__FPU_USED) && (__FPU_USED== 1U)
   SCB->CPACR |= ((3U <<10U * 2U) |         /* set CP10 FullAccess */
                 (3U << 11U* 2U)  );       /* set CP11 Full Access */
#endif

  /* Reset the RCC clock configuration to thedefault reset state(for debug purpose) */
  /* Set HSION bit */
  RCC->CR |= (uint32_t)0x00000001;
  …
}
类型:MCU应用
适用型号AT32F413,AT32F403, AT32F403A, AT32F407
主功能FPU
次功能

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

178

主题

270

帖子

10

粉丝