C51单片机与实时系统RTX51(Tiny / Full)

一、初识RTX51

        该系统在偶然间翻阅时候发现,实现在80C51上运行实时系统,虽然功能简单,但对于STC系列常用的国产C51足以,详细的资料链接:http://www.bol-system.com/APPLICATION/RTX51.htm

二、系统提供的相关接口

          该实时系统是由Keil公司提供的源码,基于汇编实现的,使用时需要包含头文件:#include <rtx51tny.h> 

          当包含了该库后,不需要自己书写main程序,直接定义相关的任务即可,使用示例如下:

#include <STC15.H>
#include <rtx51tny.h>

//指定I/O口 
sbit led0 = P1^0;
sbit led1 = P1^1;
 
/* 在 "安装目录\C51\RtxTiny2\SourceCode\Conf_tny.A51"文件中
   修改INT_CLOCK,默认定时器0的循环数作为系统的滴答数,对于STC的 1T 单片机,在10MHZ的晶振下,    
   INT_CLOCK EQU 10000 表示系统滴答时间间隔为 1ms,
   TIMESHARING EQU 5 表示任务的时间片最大为 5ms */

//初始化硬件外设
void system_init()
{
  EA = 0;
  led0 = 0;
  led1 = 0;
}

//初始任务
void main_job() _task_ 0   
{
    system_init();    //初始化硬件

    os_create_task(1);//创建任务1  		
    os_create_task(2);//创建任务2		
    
    os_delete_task(0);//任务0退出 
}   

//LED0闪烁
void led0() _task_ 1    
{
    while(1)   	
    {   
        led0 = ~led0;
        os_wait(K_TMO,100,0); //延时1s
    }    
}   

//LED1闪烁
void led1() _task_ 2    
{   		
    while(1)
    {  	
        led1 = ~led1;	
        os_wait(K_TMO,150,0);	
    }   
}  

系统提供的函数接口如下:

unsigned char os_create_task     (unsigned char task_id);
unsigned char os_delete_task     (unsigned char task_id);

unsigned char os_wait            (unsigned char typ, 
                                  unsigned char ticks,
                                  unsigned int dummy);
unsigned char os_wait1           (unsigned char typ);
unsigned char os_wait2           (unsigned char typ,
                                  unsigned char ticks);

unsigned char os_send_signal     (unsigned char task_id);
unsigned char os_clear_signal    (unsigned char task_id);
unsigned char isr_send_signal    (unsigned char task_id);

void          os_set_ready       (unsigned char task_id);
void          isr_set_ready      (unsigned char task_id);

unsigned char os_running_task_id (void);
unsigned char os_switch_task     (void); 

void          os_reset_interval  (unsigned char ticks);

每个接口的含义后续补充完善。。。

对应文件:“安装目录\C51\INC\RTX51TNY.H”

三、Keil限制

         注意破解Keil时使用professional版本,否则会限制,如图:

四、编译限制

        keil在编译RTX51系统时会报错:*** FATAL ERROR L257: RTX51-TINY REQUIRES UPGRADE TO PK51

这是因为破解的keil不包含操作系统,因此需要按照以下方式重新破解。

如果还有2K的限制,表明此时的keil处于MDK和C51混合的场景,需要将Keil的ARM侧重新添加License,目前个人是添加到如下情况后可以正常编译,其它情况没有再做深入研究,有需要的童鞋可以自行研究,更改授权类型以满足相应的编译功能,如果觉得麻烦,可以考虑Linux下搭建编译环境。

©️2020 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值