打印

STM32 的 can 库, 是个最烂的函数库

[复制链接]
2635|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
acgean|  楼主 | 2013-6-5 17:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 acgean 于 2013-6-5 17:24 编辑

Message 的数据块不对齐8字节, 如果应用上要用 long 或者 __int64 传递发送数据,很可能会遇到 用法 Fault!
CAN 模块里面的数据寄存器是 32 位, 偏偏处理函数强制转换成八位数, 大大降低效率!
照顾到了 RCR 的远程帧, 却不照顾一下时间戳。

结论, 虽然大家都推荐使用库函数我不反对, 但还请避免使用 CAN 的库函数。
沙发
hawksabre| | 2013-6-5 18:39 | 只看该作者
这个需要好好推敲一下    后面应用时   需要留心一下

使用特权

评论回复
板凳
airwill| | 2013-6-6 09:20 | 只看该作者
是啊, 也发现:
CanTxMsg, CanRxMsg 里的数据如果用  long 或者 __int64 传递, 那么编译器的优化等级不能超过 1
否则用法 Fault 哦!

使用特权

评论回复
地板
agoodog| | 2013-7-12 14:50 | 只看该作者
本帖最后由 agoodog 于 2016-12-29 20:40 编辑

有同感啊,CANx->sTxMailBox[transmit_mailbox].TDTR |= TxMessage->DLC;

DLC就是8位的,而邮箱的TDTR 是32位的,是有点浪费

不过,我感觉可以利用上,比如用户要想发送一个源节点和目的节点的ID,可以通过编码的方式放到TDTR 里

这样通过邮箱传的信息量不就更大了??

欢迎讨论。

使用特权

评论回复
5
永远的不知| | 2013-7-12 16:19 | 只看该作者
mark,收藏

使用特权

评论回复
6
zeluo| | 2013-7-12 20:04 | 只看该作者
原来是这样啊   以后就不用了   呵呵

使用特权

评论回复
7
tianli1980| | 2013-7-13 21:16 | 只看该作者
如果只是候简单地去用,它是一个不错的选择,但对它依赖太多,可能对于精细开发是个很大的障碍

使用特权

评论回复
8
baiyunfei.k.f| | 2013-7-15 14:09 | 只看该作者
学习了

使用特权

评论回复
9
拿起书本| | 2013-7-15 15:22 | 只看该作者
呵呵,库让刚刚接触STM32的朋友们真是又喜又悲啊,喜的是仅仅调用API就可以了,可以有更到的时间来专注于算法和程序架构的设计,悲的是理解不过来,涉及了太多的宏、结构体、断言、连接符、铺天盖地的头文件.......

使用特权

评论回复
10
sxhhhjicbb| | 2013-7-15 16:31 | 只看该作者
固的头文件定义的不好。固之间还不兼容。只能说库做得不好。

使用特权

评论回复
11
sxhhhjicbb| | 2013-7-15 16:32 | 只看该作者
不果不是快速开发,自己写是最好的。当然,有些项目要求快。只能用库了。

使用特权

评论回复
12
hkcj| | 2013-7-15 19:14 | 只看该作者
确实不是很给力   楼主   顶一个   

使用特权

评论回复
13
hkcj| | 2013-7-15 19:15 | 只看该作者
有没有高手   有用的比较顺手的资料    上传一下   这样可以学一学   呵呵

使用特权

评论回复
14
pattywu| | 2013-10-31 21:39 | 只看该作者
    自己改一下,把CanTxMsg, CanRxMsg中DLC改为16位的成员变量,就可以了。
    不要指望ST的库会怎么样好。

使用特权

评论回复
15
香水城主| | 2013-11-1 10:25 | 只看该作者
如果你能看懂它,每一个都很烂,

使用特权

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

本版积分规则

33

主题

446

帖子

1

粉丝