打印

STM32的外设库在编译器上要做什么设置吗?

[复制链接]
4200|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
TuBie|  楼主 | 2011-1-18 17:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天升级到了keil 的4.14,问题就出来了,以前用的好好的keil外设库突然编译出现大量错误,都是关于变量重定义的。

我试了一下,在工程选项中有关编译的部分,把原先预定义的“USE_STDPERIPH_DRIVER”去掉,就不再提示变量重定义了,但是给出了少量的assert_param()没有定义的错误,而加上“USE_STDPERIPH_DRIVER”,没有出assert_param()没有定义的错误,但是出现大量变量重定义错误。


哪位大侠指导一下工程中该怎么设置才能避免出错?谢谢!
沙发
TuBie|  楼主 | 2011-1-19 23:35 | 只看该作者
有没有大侠知道?或者需要提供什么信息?

使用特权

评论回复
板凳
香水城| | 2011-1-20 10:42 | 只看该作者
看看错误类型提示,按照提示看看出现错误的语句,应该不难找到问题。

使用特权

评论回复
地板
IJK| | 2011-1-20 13:22 | 只看该作者
或许是 keil 4.14 自身带的库的问题

使用特权

评论回复
5
TuBie|  楼主 | 2011-1-20 22:58 | 只看该作者
回香主:就是原来固件库中头文件定义的东西都说是重定义了。
我感觉4楼说的是有可能性的,我试试把keil自己的include路径改个名字试试。

使用特权

评论回复
6
TuBie|  楼主 | 2011-1-26 00:07 | 只看该作者
本帖最后由 TuBie 于 2011-1-26 00:12 编辑

终于搞定了!!!!!!!!!

1) 首先还是像以往一样要继续在工程属性中使用“USE_STDPERIPH_DRIVER”预编译选项。这个可以防止出现“param_assert()没有定义”的错误;
2) 然后是最关键的防止出错的方法,就是到keil/arm/inc目录下,把ST目录改个名字,例如改为STXXXXX,目的是让编译器找不到ST相关的内容,而只使用外设库中的头文件。此步骤最关键;
3)编译后海出了一个小错,就是出错提示:stm32f10x_conf.h文件找不到,这个很奇怪,就在工程的目录里放着,于是手工在工程的设置中加入一个新的include目录,即工程所在的目录,或者直接添加一个当前目录符号:. 即可。

以上三步后,编译,我的妈呀,错误0,警告0,一切OK了。
很满意的是,用的是从keil网站上下的MDK 4.14试用版,可以编译32k的代码,我的才20k,无需**就能使用,爽啊。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

135

主题

428

帖子

0

粉丝