为什么必须在配置文件里定义USE_STDPERIPH_DRIVER和STM32F40_41xxx

2019-07-20 06:08发布

如题:为什么必须在配置文件里定义USE_STDPERIPH_DRIVER和STM32F40_41xxx  ?
而在主函数前面采用
#define STM32F40_41xxx
#define USE_STDPERIPH_DRIVER

这种预定义方式程序就会编译不通过,出现很多warning和一个错误:
....
..FWLIBsrcstm32f4xx_wwdg.c(242): warning:  #223-D: function "assert_param" declared implicitly
    assert_param(IS_WWDG_COUNTER(Counter));
..FWLIBsrcstm32f4xx_wwdg.c: 4 warnings, 0 errors
linking...
.. est1.axf: Error: L6218E: Undefined symbol assert_param (referred from misc.o).
Not enough information to list image symbols.
Finished: 1 information, 0 warning and 1 error messages.
".. est1.axf" - 1 Error(s), 545 Warning(s).
Target not created.
Build Time Elapsed:  00:00:34

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
slbm
1楼-- · 2019-07-20 07:41
DreamWaterPro 发表于 2018-9-14 08:40
额不是的,虽然提前编译,但是这个宏的作用域不一样,建议参考C语言中变量的作用域/生存期/有效区域等等 ...

谢谢!
#define 只在包含的c文件里有效!!
DreamWaterPro
2楼-- · 2019-07-20 09:48
 精彩回答 2  元偷偷看……
slbm
3楼-- · 2019-07-20 12:53
 精彩回答 2  元偷偷看……
DreamWaterPro
4楼-- · 2019-07-20 16:16
slbm 发表于 2018-9-13 23:55
谢谢!但是按编译顺利,不是应该先编译#define STM32F40_41xxx
#define USE_STDPERIPH_DRIVER
然后才是 ...

额不是的,虽然提前编译,但是这个宏的作用域不一样,建议参考C语言中变量的作用域/生存期/有效区域等等字样的相关知识。
Sunny^o^
5楼-- · 2019-07-20 20:43
 精彩回答 2  元偷偷看……
DreamWaterPro
6楼-- · 2019-07-21 02:05
slbm 发表于 2018-9-15 20:30
谢谢!
#define 只在包含的c文件里有效!!

正解!

一周热门 更多>