VSCODE + EIDE 下 STM32 编程使用部分外设无法通过编译:undefined reference to ‘xxx‘
我在配置某些外设时,敲代码时,代码提示能正常找到所有外设的库
编译时提示找不到 undefined reference to 'xxx_init'
,也就是没找到stm32f10x_xxx.c
。
同一个目录下的stm32f10x_tim.c
却可以被找到。
临时解决方案
将stm32f10x_xxx.c复制到头文件的目录下
最终解决方案
发现是 EIDE 配置的问题。编译时 EIDE 默认将一些外设的库函数排除在外了,
在项目目录的.eide\eide.json
中:
{..."targets": {"Debug": {"excludeList": ["hal/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c","hal/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c","hal/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c","hal/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c","hal/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c","hal/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c","hal/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c","hal/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c","hal/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c","hal/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c","hal/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c","hal/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c","hal/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c","hal/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c","hal/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c"],....
}
将 excludeList
中想要用到的库删除,再重新加载项目即可。