完善资料让更多小伙伴认识你,还能领取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; } |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
788 浏览 0 评论
4271 浏览 0 评论
如何使用python调起UDE STK5.2进行下载自动化下载呢?
2529 浏览 0 评论
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
2929 浏览 0 评论
获奖公布!2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
31479 浏览 11 评论
72913 浏览 21 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 12:06 , Processed in 0.491168 second(s), Total 42, Slave 35 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号