small RTOS 51 项目串口接收数据出错
本人现开发一项目,用 small RTOS 51做操作系统,项目中有液晶显示,,指示灯显示,按键,蜂鸣器报警,还有两组485串口通信,芯片用的是STC15W4K56S4,现在发现问题是液晶总是视乎刷新慢,通过对两组485数据监控发现是,下位机传到总线上的数据是正确的,而51单片机把接收到的数据转存缓存保存下来的数据有问题,因为我通过另外y一组485串口将数据发出来,监控帧数据发现总共42个字节的内容,前10个字节的内容大部分会出错,少量的会正确,而其它内容会一直都是正确的。请大家帮忙分析是什么问题产生的不胜感激!请杨老师帮忙分析分析,给点建议,谢谢! hyt 发表于 2024-9-25 09:50
请杨老师帮忙分析分析,给点建议,谢谢!
你将来有打算用管脚与STC15系列相同的STC8系列或者STC32系列的单片机吗?还是只考虑用STC15W4K56S4单片机?我会针对你的需求仔细第答复你
杨老师,现在打算用STC15系列,麻烦帮忙分析分析,谢谢。 本帖最后由 杨为民 于 2024-9-27 21:59 编辑
hyt 发表于 2024-9-27 15:36
杨老师,现在打算用STC15系列,麻烦帮忙分析分析,谢谢。
(1)Small RTOS51(以下简称SRT51)的作者陈先生嫌弃RTX51 Full太大,嫌弃RTX Tiny没有优先级和中断管理,正好看到了刚引进的uC/OS-II的书和开源代码,因此就写了SRT51系统。
(2)陈先生写书和系统时,国内的51单片机RAM很小,他用于开发和推荐给用户的实验箱为“DP-51单片机仿真实验仪”(我猜是周立功的产品),其使用的单片机是P89C52X2:
其8051内核只有256字节RAM。
(3)虽然DP-51扩展了片外的XDATA(PDATA方式),但是SRT51系统只使用的IDATA空间。
(4)为了将uC/OS-II塞到IDATA空间中,陈先生在移植时采用了“魔改”的方法。因此陈先生在书中明确声明:SRT51只支持的用户使用256字节的IDATA空间,对于用户使用PDATA和XDATA空间,SRT51不保证任务切换时数据的正确性。
我读了其移植代码,确实如此。
(5)因此楼主的SRT51程序如果使用STC15单片机的XDATA空间变量,数据出错是必然的现象,不是意外。
(6)据我了解,陈先生的SRT51是国内首个将uC/OS-II移植到8051单片机成功产品,虽然不适用于现在有大容量XDATA空间的80x51单片机,陈先生作为先驱者值得我们尊敬,但其产品SRT51不适合运行在STC15系列和以后的STC8X等系列单片机了。
---- 解决方案 --------------------------------
(7)论坛里有许多STC8H系列单片机的uC/OS-II移植案例,如果楼主将你的芯片改为STC8H系列,则可以直接使用这些移植案例。
(8)如果楼主坚持要用STC15系列单片机,可以对论坛中的STC8H系列的案例进行改造,原则上只要替换STC8H的头文件就可以很容易地修改到STC15系列单片机上了
论坛里的uC/OS-II-STC8移植方案,是针对51内核,并不是针对具体型号,
所以,你可以使用其中任意一个基于51内核的uC/OS-II移植方案。
uC/OS-II@8H8K64U, 51核移植版本!杨教授:51核上激动人心的RTOS生态已具备 - uCOS/FreeRTOS,GUI-uGFX/U8g2, 文件系统, 国产RTOS, 实时操作系统 国芯技术交流网站 - AI32位8051交流社区 (stcaimcu.com)
非常感谢杨老师的帮忙,不胜感激!我在原程序上加了不少代码做任务切换控制,数据没有被覆盖更改了,但液晶刷新速度还是较慢,不过已经改善很多。我这边再按杨老师的建议移植到uCOS上试试,不胜感激,谢谢!另外,咨询下STC8或STC32哪款能同STC15W4K56S4PIN对PIN兼容,有吗?望推荐1.
页:
[1]