从官网下载官方库后按照STM32环境的流程,把需要的文件都添加进项目中了。
编译报错缺少两个文件:core_cmInstr.h 和 core_cmFunc.h
.\Core\core_cm3.h(176): error: #5: cannot open source input file "core_cmInstr.h": No such file or directory
.\Core\core_cm3.h(177): error: #5: cannot open source input file "core_cmFunc.h": No such file or directory
于是找遍整个官方库都没有发现这两个文件,于是只能尝试注释掉。
但是随后又报错如下:
.\Objects\rcupboard.axf: Error: L6218E: Undefined symbol __SEV (referred from gd32f10x_pmu.o).
.\Objects\rcupboard.axf: Error: L6218E: Undefined symbol __WFE (referred from gd32f10x_pmu.o).
.\Objects\rcupboard.axf: Error: L6218E: Undefined symbol __WFI (referred from gd32f10x_pmu.o).
这种一般是汇编定义,打开我的STM32项目,随便写上__WFI();然后跳转定义,发现这个定义就是在core_cm3.h这个文件中,但是我gd32项目里没有这个定义,于是我就把stm32项目里这个定义复制过来到前面gd32项目的core_cm3.h中的注释掉的include core_cmInstr.h和core_cmFunc.h这个代码附近。
如下:
/* ################### Compiler specific Intrinsics ########################### */
#define __enable_fault_irq __enable_fiq
#define __disable_fault_irq __disable_fiq
#define __NOP __nop
#define __WFI __wfi
#define __WFE __wfe
#define __SEV __sev
#define __ISB() __isb(0)
#define __DSB() __dsb(0)
#define __DMB() __dmb(0)
#define __REV __rev
#define __RBIT __rbit
#define __LDREXB(ptr) ((unsigned char ) __ldrex(ptr))
#define __LDREXH(ptr) ((unsigned short) __ldrex(ptr))
#define __LDREXW(ptr) ((unsigned int ) __ldrex(ptr))
#define __STREXB(value, ptr) __strex(value, ptr)
#define __STREXH(value, ptr) __strex(value, ptr)
#define __STREXW(value, ptr) __strex(value, ptr)
//#include <core_cmInstr.h> /* Core Instruction Access */
//#include <core_cmFunc.h> /* Core Function Access */