OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8231|回复: 3

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

[复制链接]

5

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2017-6-24
在线时间
18 小时
发表于 2017-8-31 02:01:41 | 显示全部楼层 |阅读模式
5金钱
本帖最后由 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_NUCLEO\STM32F303K8_NUCLEO.axf: Error: L6218E: Undefined symbol HAL_IWDG_Init (referred from main.o).
STM32F303K8_NUCLEO\STM32F303K8_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 也没有设置问题

请大神们指点了 跪谢




最佳答案

查看完整内容[请看2#楼]

在这个文件里stm32f4xx_hal_conf.h,看看#define HAL_IWDG_MODULE_ENABLED是不是被注释掉了,如果是打开就可以了 #define HAL_MODULE_ENABLED /* #define HAL_ADC_MODULE_ENABLED */ /* #define HAL_CRYP_MODULE_ENABLED */ /* #define HAL_CAN_MODULE_ENABLED */ /* #define HAL_CRC_MODULE_ENABLED */ /* #define HAL_CRYP_MODULE_ENABLED */ /* #define HAL_DAC_MODULE_ENABLED */ /* #define HAL_DC ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

266

帖子

0

精华

高级会员

Rank: 4

积分
693
金钱
693
注册时间
2017-7-27
在线时间
98 小时
发表于 2017-8-31 02:01:42 | 显示全部楼层
本帖最后由 huanghan 于 2017-9-1 11:50 编辑

在这个文件里stm32f4xx_hal_conf.h,看看#define HAL_IWDG_MODULE_ENABLED是不是被注释掉了,如果是打开就可以了

#define HAL_MODULE_ENABLED  

/* #define HAL_ADC_MODULE_ENABLED   */
/* #define HAL_CRYP_MODULE_ENABLED   */
/* #define HAL_CAN_MODULE_ENABLED   */
/* #define HAL_CRC_MODULE_ENABLED   */
/* #define HAL_CRYP_MODULE_ENABLED   */
/* #define HAL_DAC_MODULE_ENABLED   */
/* #define HAL_DCMI_MODULE_ENABLED   */
/* #define HAL_DMA2D_MODULE_ENABLED   */
/* #define HAL_ETH_MODULE_ENABLED   */
/* #define HAL_NAND_MODULE_ENABLED   */
/* #define HAL_NOR_MODULE_ENABLED   */
/* #define HAL_PCCARD_MODULE_ENABLED   */
/* #define HAL_SRAM_MODULE_ENABLED   */
/* #define HAL_SDRAM_MODULE_ENABLED   */
/* #define HAL_HASH_MODULE_ENABLED   */
/* #define HAL_I2C_MODULE_ENABLED   */
/* #define HAL_I2S_MODULE_ENABLED   */
#define HAL_IWDG_MODULE_ENABLED
/* #define HAL_LTDC_MODULE_ENABLED   */
/* #define HAL_RNG_MODULE_ENABLED   */
/* #define HAL_RTC_MODULE_ENABLED   */
/* #define HAL_SAI_MODULE_ENABLED   */
/* #define HAL_SD_MODULE_ENABLED   */
/* #define HAL_MMC_MODULE_ENABLED   */
/* #define HAL_SPI_MODULE_ENABLED   */
/* #define HAL_TIM_MODULE_ENABLED   */
#define HAL_UART_MODULE_ENABLED
/* #define HAL_USART_MODULE_ENABLED   */
/* #define HAL_IRDA_MODULE_ENABLED   */
/* #define HAL_SMARTCARD_MODULE_ENABLED   */
/* #define HAL_WWDG_MODULE_ENABLED   */
/* #define HAL_PCD_MODULE_ENABLED   */
/* #define HAL_HCD_MODULE_ENABLED   */
/* #define HAL_DSI_MODULE_ENABLED   */
/* #define HAL_QSPI_MODULE_ENABLED   */
/* #define HAL_QSPI_MODULE_ENABLED   */
/* #define HAL_CEC_MODULE_ENABLED   */
/* #define HAL_FMPI2C_MODULE_ENABLED   */
/* #define HAL_SPDIFRX_MODULE_ENABLED   */
/* #define HAL_DFSDM_MODULE_ENABLED   */
/* #define HAL_LPTIM_MODULE_ENABLED   */
#define HAL_GPIO_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_RCC_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
#define HAL_PWR_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
回复

使用道具 举报

5

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2017-6-24
在线时间
18 小时
 楼主| 发表于 2017-8-31 16:12:43 | 显示全部楼层
huanghan 发表于 2017-8-31 08:03
在这个文件里stm32f4xx_hal_conf.h,看看#define HAL_IWDG_MODULE_ENABLED是不是被注释掉了,如果是打开就 ...

再生父母啊,。大哥你好厉害 一眼看出
回复

使用道具 举报

5

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2017-6-24
在线时间
18 小时
 楼主| 发表于 2017-8-31 16:16:53 | 显示全部楼层
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 这个文件就没有效果
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-18 07:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表