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 Full Access */ (3U << 11U * 2U) ); /* set CP11 Full Access */ #endif /* Reset the RCC clock configuration to the default reset state(for debug purpose) */ /* Set HSION bit */ RCC->CR |= (uint32_t)0x00000001; … } |
|