杰瑞鼠
杰瑞鼠
This guy hasn't written anything yet

注册于 3 years ago

回答
43
文章
3
关注者
6

搞出来了吗?demo能参考下吗?2730122869@163.com

问题得到了解决,主要还是自己的疏忽:
1 源文件和头文件的后缀要用小写.h/.c而大写的.H/.C表示C++
2 添加main.h的路径要采用相对路径,而不能文件夹位置的绝对路径。

1基于开源软件包的开发如果保证系统的稳定性?遇到多个软件包组合起来的功能如果保证可靠性?
2产品软件设计之初,如何安排和规划任务从而保证系统更加合理?
3对从单片机入门的工程师学好linux和rt-thread smart的最佳路线图是什么?
4对单片机工程师来说c++在那些方面能用起来?

修改303行为你自己的MAC字符串即可。

猜想原因可能是这样的:假如高优先级任务就绪前,三个任务中正在运行的是MB_RTU_THRAD1,当高优先级任务就绪时,MB_RTU_THRAD1被抢占变成非就绪态,在网络线程中因为不知道前一刻运行的是MB_RTU_THRAD1~3中的哪一个,所以全部挂起,网络服务完成时再全部恢复。
1 因为挂起时没有显示执行一次调度器调度,所以离开时MB_RTU_THRAD1没有变成就绪态。而时间片轮转调度的前提是共享优先级的任务都就绪,且没有更高优先级任务时才轮流执行。所以后面永远执行不到MB_RTU_THRAD1了。那恢复线程时执行一次调度器调度会不会好点。
2 高优先级网络任务是周期执行的,周期是8s,刚好是时间片轮转每个任务的时间8s,时间错开是不是会避免?
3 文档中心中说不建议主动调用线程挂起,若使用建议和显示调度器调用配合使用。我觉得解决措施因为是设置一个共享变量,在三个共享线程运行时设置不同值,在高优先级任务到来时,先查询该值判断之前运行的是那个线程,然后停止该线程;在网络服务完毕后再执行该任务,不知是否能解决问题,先试试看

新年新气象,2021年愿RT_THREAD有更大的发展,功能越来越强大越完善,越来越好用(bug少,解决更多的工程师痛点)。也希望自己的RT_THREAD技能有更多的进步。

最终解决了吗?我最近也在考虑SPI从机模式。

那它使用的是什么?怎么在一个板子上跑,资料很少啊

最后解决及问题分析:最后eerom写操作之后平均每写一个字节延时1ms,不再出错。分析可能是f4主频168MHZ,和M24C02速度不匹配造成的。

AT24CXX软件包是用软件模拟I2C,里面没有初始化没有提及SDA,SCL引脚IO的设置速度,这个会有影响吗?
软件模拟I2C的驱动里面的ops,delya_us,timout调整没效果,这两个参数为何会更改没效果呢?

20210118.png

我也面临这个问题,谁能给个demo?

按照RT_thread有关人员的操作,只替换这4个文件夹而不是整个文件夹,实际验证确实可以。
image.png

回到
顶部

发布
问题

投诉
建议