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

注册于 3 years ago

回答
40
文章
3
关注者
5

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

文档中心对这块有说明。这两个出现的位置时不同的。
1 关中断一般是在线程里面对某个代码段进行保护(但也有在中断中关中断,但很少用。我们在裸机下都是进入中断后顶多先屏蔽当前类型的中断而不是关总中断;OS中更不会在中断中关闭总中断)。
2 进出临界区一般都是用在中断ISR中,提示内核记录中断的嵌套或者就像有的内核资源,记录申请了多少次就释放多少次。文档中心说的是如果中断中有利用到类似信号量等内核资源,就需要给出进出指示。
【望采纳】

你用sprintf函数将浮点数格式化打印到字符串,再将字符串通过串口输出就可以了。望采纳

我用LibmodbusTCP也是,原软件包用的时close(),但如如此会出现image.png
该成closesocket(client_sock_fd);,但运行长时间后系统会崩溃,根据cmbacktrace总是跟踪到 FD_SET(server_fd, &readset);这一句
请问后来怎么彻底解决的?

发布
问题