网上能找到的资料,大部分是STC15单片机或者STC8在12T的模式下跑RTX51,本人觉得太浪费这些增强型的51单片机芯片了,于是经过测试,成功在1T模式下跑RTX51。
具体涉及的操作如下:
1.在工程中添加RTX51
2.头文件包含#include <rtx51tny.h>
3.修改Conf_tny.A51的TIMESHARING EQU 1 这边的1原来默认为5
测试的主函数如下所示:
#include <rtx51tny.h>
#include <stc8.h>
#include “uart.h”
//晶振频率24MHz
typedef unsigned char uchar;
typedef unsigned int uint;
sbit LED0 = P5^5;
void job0(void) task 0
{
LED0 = 1;
UartInit();
os_create_task(1); //创建任务1
os_create_task(2); //创建任务1
os_delete_task(0); //删除自己(task0),使task0退出任务链表
}
void job1(void) task 1
{
while(1)
{
UART_SendString(“hello\r\n”);
os_wait(K_IVL, 100, 0); //等待100个时钟滴答(ticks),即1s
}
}
void job2(void) task 2
{
while(1)
{
LED0 = !LED0;
os_wait(K_IVL, 1, 0); //等待1个时钟滴答(ticks),即10ms
}
}
经过测试,os_wait(K_IVL, 1, 0)的时间基本能比较接近10ms。os_wait(K_IVL, 10, 0)的时间比较接近100ms。看下图。
最后注意,本环境是在24MHz 的情况下测试的。
代码在https://gitee.com/lmqhello/rtx51_-stc8_-demo.git