本帖最后由 sun0727 于 2017-8-31 02:02 编辑
我程序是想测试下 Watch dog 的功能, 然后是在官方 GPIO 范例 上 直接加入了 watchdog 功能函数
用到的两个 Wathdog 官方库函数 HAL_IWDG_Init 和 HAL_IWDG_Refresh 都在
stm32f3xx_hal_iwdg.c 文件下定义
所以 我将该 .c 文件添加到了工程
并且 在 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 文件
排查了两小时 发现以下现象
1. 我本来是在官方 GPIO 范例下 进行 添加修改,但是如果将 这个 main函数复制到 一个包含完整库函数的模板中 就能编译通过,说明应该是我添加 .c 文件中出现了问题,.h 没有被成功找到。但是path 中我已经正确添加了 .h 文件的路径
2. 即使 没有 添加
stm32f3xx_hal_iwdg.c 到工程组中,错误也是这两个
3. 魔术棒 C/C++ 选项卡 的 Define 也没有设置问题
请大神们指点了 跪谢
有个小问题,我看这个宏定义被引用在这里
[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 这个文件就没有效果
一周热门 更多>