5497|10

69

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

STM32的库有个不容易发现的瑕疵,另外也应该做下整合 [复制链接]

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标准的冲突。
此帖出自stm32/stm8论坛

最新回复

                                 楼主提到的问题都不大。我倒觉得库中有个bb0和bb1的定义有点别扭,记得是u16_u8的结构体类型。既然cortex-m3是小尾端的,bb0和bb1就应该换个位置。这样可增加代码可读性,库的使用也方便些。bushond抓到的数据也好理解。不过,改u16_u8的话,有些例子代码也要修改,比较麻烦   详情 回复 发表于 2008-11-25 17:03
点赞 关注
 

回复
举报

65

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

Re

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

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

好贴 顶!

                                 好贴 顶!
此帖出自stm32/stm8论坛
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

4
 

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

                                 需要补什么代码?  谢谢指教。
此帖出自stm32/stm8论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

5
 

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

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

6
 

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

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

7
 

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

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

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

这叫做站在巨人的肩膀上,巨人要上坡,咱不能卡在树杈上。
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

8
 

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

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

9
 

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

                                 函数名前面加个My
此帖出自stm32/stm8论坛
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

10
 

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

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

回复

84

帖子

0

TA的资源

一粒金砂(初级)

11
 

re

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

不过,改u16_u8的话,有些例子代码也要修改,比较麻烦
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表