完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
在调试程序时发现,CAN和serial线程里面都调用rt_device_write函数会导致rt_device_write函数卡死。CAN是用中断接收和发送,serialDMA接收,轮询发送。会不会就是两个线程之间会有影响呢,导致rt_device_write堵死呢?程序本身不会死掉,运行灯还一直运行,但是serial和can会死掉
|
|
相关推荐
1个回答
|
|
|
rt_device_write的函数很简单的,断言,判断ref_count, 调用dev->write函数。代码如下所示:
serial和can死掉,那就是这两个外设的写操作死掉了,建议再深入去查一下原因,更加准确说明现象、提供详细的log等。在drv_usart.h/drv_can.c中具体的写操作函数中找原因。 rt_size_t rt_device_write(rt_device_t dev, rt_off_t pos, const void *buffer, rt_size_t size) { RT_ASSERT(dev != RT_NULL); RT_ASSERT(rt_object_get_type(&dev->parent) == RT_Object_Class_Device); if (dev->ref_count == 0) { rt_set_errno(-RT_ERROR); return 0; } /* call device_write interface */ if (device_write != RT_NULL) { return device_write(dev, pos, buffer, size); } /* set error code */ rt_set_errno(-RT_ENOSYS); return 0; } |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1033 浏览 0 评论
2877 浏览 0 评论
图腾柱PFC无法上升至400V,且电感电流为正弦波形,但是幅值极小
9386 浏览 0 评论
飞凌嵌入式ElfBoard-Vim编辑器之静态链接和动态链接
2898 浏览 0 评论
使用 LinkBoy 将程序导出为 C 语言代码并烧录至 Arduino ESP32 开发板
2302 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 06:12 , Processed in 0.889609 second(s), Total 72, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1322