Keil 5 无法将.h文件加入到.c 文件下 一直报Error: L6218E undefined Symbo

2019-07-20 12:15发布

本帖最后由 sun0727 于 2017-8-31 02:02 编辑

我程序是想测试下 Watch dog 的功能, 然后是在官方 GPIO 范例 上 直接加入了 watchdog 功能函数
用到的两个 Wathdog 官方库函数 HAL_IWDG_Init 和 HAL_IWDG_Refresh  都在 stm32f3xx_hal_iwdg.c 文件下定义

所以 我将该 .c 文件添加到了工程

1.jpg
并且 在 main.c 文件中 使用 #include "stm32f3xx_hal_iwdg.h" 包含其头文件,.h文件的路径 也已经添加到 Path


但是 编译一直提示

STM32F303K8_NUCLEOSTM32F303K8_NUCLEO.axf: Error: L6218E: Undefined symbol HAL_IWDG_Init (referred from main.o).
STM32F303K8_NUCLEOSTM32F303K8_NUCLEO.axf: Error: L6218E: Undefined symbol HAL_IWDG_Refresh (referred from main.o).

左侧边栏stm32f3xx_hal_iwdg.c 文件下也没有对应的 stm32f3xx_hal_iwdg.h 文件

2.jpg

排查了两小时 发现以下现象
1. 我本来是在官方 GPIO 范例下 进行 添加修改,但是如果将 这个 main函数复制到 一个包含完整库函数的模板中 就能编译通过,说明应该是我添加 .c 文件中出现了问题,.h 没有被成功找到。但是path 中我已经正确添加了 .h 文件的路径

2. 即使 没有 添加 stm32f3xx_hal_iwdg.c  到工程组中,错误也是这两个
3. 魔术棒 C/C++ 选项卡 的 Define 也没有设置问题

请大神们指点了 跪谢




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。