硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4029|回复: 0
收起左侧

[客户分享] 其他M3内核MCU的库和AT32 pack造成hardfault

[复制链接]

41

主题

1

回帖

124

积分

初级会员

积分
124
发表于 2021-4-22 22:03:43 | 显示全部楼层 |阅读模式
其他M3内核MCU的库和AT32 pack造成hardfault


Questions:使用其他M3内核MCU的库,AT32的pack文件,程序会进入hardfault?
Answer:
客户程序进hardfault,是由于客户使用其他M3内核MCU的库,pack却选择的AT32并开启FPU功能。而其他M3内核MCU的库并不支持FPU功能。以下两种方式任选其一可以解决问题。
解法1:关闭FPU功能,如下图:
![在这里插入图片描述](?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xlb19UYW5sZWk=,size_16,color_FFFFFF,t_70#pic_center)


解法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
次功能:无

回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-10 01:14 , Processed in 0.174560 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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