完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
开发环境:RTT4.1.0+STM32F407VET6 1.不存在硬件问题,裸机测试没问题。可以正常发送任何数据! 4.发送的数据内容:
5.接收到的报文,存在错误。当前CAN设备连接为STM32F407VET6+周立功CAN卡。 6.在发送数据乱的不行,正确的数据,发出来是错的,已经把我的机器人搞伤了。实在没法子,只能一步一步跟踪底层了。突然发现一个问题: 官方强制将pmsg移位后的数据强制转变成32位的,这样原本是0的值就会变成ff。 不改的情况下,发送的数据是: CAN卡接收到的数据是: 修改官方底层代码为: can卡收到的数据就正常了: 心疼我的代码,改了好久。还没得深究,宏定义有问题? |
|
相关推荐
5个回答
|
|
|
|
|
|
我不完全统计和确认,但是好像每个字节的数值越大越不对,比如08没错,但是bb可能就错了。我后面在测试测试! 跟发送太快,CAN缓冲不够,被数据覆盖有联系不?或者这一方面的类似问题? 我跟踪到底,发现drv_can文件里的这里是这样的。其中pmsg的值是对的,但是赋值到邮箱时,像是错了? |
|
|
|
看起来是data[]有符号号的,强转无符号时出现补码了,你指令级单步确认下,或修改下数据类型。
|
|
|
|
是的,一开始我也觉得本身是8位的,我试着把rt_uint8_t也去掉还是不行,保留才行。 你这么说应该是,是补码造成的。 为啥我们的官网看图不能放大呢? int main() { rt_int8_t a=0x11,b=0x22; uint32_t c=0; while (1) { c=(uint32_t)a<<24|(uint32_t)b<<8; LOG_I("%08x",c); rt_thread_delay(500); } } 但是这种他又没出错啵 |
|
|
|
好像只能先按住ctrl键再滑动鼠标中键来放大图片
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1039 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
3425 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1465 浏览 0 评论
2146 浏览 0 评论
1640 浏览 0 评论
75373 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 23:33 , Processed in 0.631851 second(s), Total 49, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号