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

其他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
次功能:无

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值