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 也没有设置问题

请大神们指点了 跪谢




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
huanghan
1楼-- · 2019-07-20 18:09
 精彩回答 2  元偷偷看……
sun0727
2楼-- · 2019-07-20 23:26
 精彩回答 2  元偷偷看……
sun0727
3楼-- · 2019-07-21 04:20
huanghan 发表于 2017-8-31 02:01
在这个文件里stm32f4xx_hal_conf.h,看看#define HAL_IWDG_MODULE_ENABLED是不是被注释掉了,如果是打开就 ...

有个小问题,我看这个宏定义被引用在这里
[mw_shl_code=c,true]#ifdef HAL_IWDG_MODULE_ENABLED
#include "stm32f3xx_hal_iwdg.h"
#endif /* HAL_IWDG_MODULE_ENABLED */[/mw_shl_code]

为什么我在 main.c 里面 #include "stm32f3xx_hal_iwdg.h 这个文件就没有效果

一周热门 更多>