打印

STM32的库有个不容易发现的瑕疵,另外也应该做下整合

[复制链接]
3541|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
McuPlayer|  楼主 | 2008-11-18 01:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ST提供的FW库和USB库是独立的,实际上USB产品是两个都需要的

最近一个案子中碰到编译老出错的问题,说某某重复定义。
最后确认是“stm32f10x_type.h”的被包含问题,我再三确认我所有的.h文件都有避免重复include的宏保护。

USB库中有个文件“usb_type.h”,其中大部分是copy的“stm32f10x_type.h”中的内容。下面是摘抄,看到了吧,这个避免重复include是不完整的。就是它折腾了我好几个小时,打开Keil的预编译输出,才发现这个问题。

#ifndef __STM32F10x_TYPE_H
......................
......................
#endif

STM32的这两个库,独立提供,但用户经常一起用,建议ST对其做整合,把USB库中的冗余信息干掉,作为FW库的一部分,毕竟FW库是主力,USB库相当于股市的二级市场而已。

另外STM32的库中对bool定义成TRUE和FALSE的枚举,这个也很不好,bool是C99的标准类型。建议改成像VC那样的BOOL,这样即可延续原来的习惯,也可避免跟C标准的冲突。
沙发
armmcu| | 2008-11-18 01:53 | 只看该作者

Re

在KEIL下编译有这样的问题啊?但在IAR下面很容易就编译了,只是USB库功能不全,要自己补代码,这个需要改进

使用特权

评论回复
板凳
千千鸟| | 2008-11-18 09:22 | 只看该作者

好贴 顶!

好贴 顶!

使用特权

评论回复
地板
香水城| | 2008-11-18 14:28 | 只看该作者

“USB库功能不全,要自己补代码”,哪些功能不全?

需要补什么代码?  谢谢指教。

使用特权

评论回复
5
栏杆| | 2008-11-18 20:52 | 只看该作者

楼主厉害,要是我遇到就玩完了。

使用特权

评论回复
6
walnutcy| | 2008-11-18 23:58 | 只看该作者

我用的时候,就手动给每个头文件重加了定义,防止 重加载

使用特权

评论回复
7
McuPlayer|  楼主 | 2008-11-20 01:45 | 只看该作者

不到万不得已,不建议直接改库代码

因为这个库ST的工程师一直在maintain,假如我改了其中的代码,ST在Release新版本的时候,我得把我改过的地方一个个改到新版本里去。
另外一个途径就是给ST的工程师提建议,增强库的通用性和健壮性,ST的工程师和应用工程师的目标有很大的交集。
或者咱可以不升级库,但这对自己有些残忍,ST的库有一个Team在维护在改bug在加强,一个Team的力量,咱不借用太可惜了。

就像用VC的MFC一样,里面很多乱七八糟的东西,但咱不删也不改它,用继承类覆盖我们不喜欢的函数或者迂回解决掉。这样MS升级MFC的时候我们也可以平滑升级。

这叫做站在巨人的肩膀上,巨人要上坡,咱不能卡在树杈上。

使用特权

评论回复
8
lixun00| | 2008-11-20 04:19 | 只看该作者

不错,只要性能能满足,尽量用库

使用特权

评论回复
9
pheavecn| | 2008-11-20 08:58 | 只看该作者

看某个库函数不顺眼,可以拷贝修改一个自己的。

函数名前面加个My

使用特权

评论回复
10
makesoft| | 2008-11-24 21:47 | 只看该作者

确实bool定义成TRUE和FALSE的枚举不爽

很多编辑器都会自动改成小写(说明还是很多编译环境把这些当成标准关键字)。

使用特权

评论回复
11
cpufan| | 2008-11-25 17:03 | 只看该作者

re

楼主提到的问题都不大。
我倒觉得库中有个bb0和bb1的定义有点别扭,记得是u16_u8的结构体类型。
既然cortex-m3是小尾端的,bb0和bb1就应该换个位置。
这样可增加代码可读性,库的使用也方便些。bushond抓到的数据也好理解。

不过,改u16_u8的话,有些例子代码也要修改,比较麻烦

使用特权

评论回复
12
chen282220981| | 2013-6-12 00:58 | 只看该作者
关于stm32f10x_type.h和usb_type.h被包含的问题,请教具体如何修改,小弟水平实在太次,听不太懂你们的谈话

使用特权

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

本版积分规则

338

主题

7307

帖子

26

粉丝