case RT_CAN_CMD_SET_MODE: argval = (rt_uint32_t) arg; if (argval != RT_CAN_MODE_NORMAL && argval != RT_CAN_MODE
case RT_CAN_CMD_SET_MODE:
argval = (rt_uint32_t) arg;
if (argval != RT_CAN_MODE_NORMAL &&
argval != RT_CAN_MODE
具体代码位置,位于drv_can.c 410行,参数转换感觉有问题,相当于把地址赋值给了一个uint32_t的变量,是否应该修正为
argval = *(rt_uint32_t*) arg;
还有几处类似的操作,请帮忙看一下,是否存在问题
第二个问题:当总线发送错误时,一直无法恢复可能导致死循环 _can_int_tx 在此函数中是否应该在此函数164行处,加上失败多少次后进行应用层回调或者其他的错误处理,不应该一直continue;
查看更多
第一种应该可以这么改,最好传递指针,方便传递数据结构,直接传值简单粗暴,不算错误。第二种是否考虑在应用层增加部分超时处理机制、错误机制的处理,当然要确认是否可以解决
第二个问题应该在4.1.1中已经修正了,第一个问题可否帮忙提个PR?
欢迎发表与嵌入式相关的技术分享、开发技巧、工具介绍、技术设想、职业心得、行业评论等对他人有启发,排版优雅的文章
回到 顶部
发布 问题
分享 好友
手机 浏览
投诉 建议
回到 底部