RTX-51实时系统(2)
扫描二维码
随时随地手机看文章
【例子】调用Keil自带的RTX-51 Tiny实时系统来控制LED灯,不断重复4种不同的流水灯每100ms对LED进行操作。
RTX-51实时系统代码如下:
1#include"stc.h"2#include"rtx51tny.h"34#defineTASKINIT0//任务ID5#defineLEDCTRLTASK116#defineLEDCTRLTASK227#defineLEDCTRLTASK338#defineLEDCTRLTASK44910#defineLED_PORTP21112/******************************************13*函数名称:Taskinit14*输入:无15*输出:无16*功能:初始化任务17*******************************************/18voidTaskinit(void)_task_TASKINIT19{2021os_create_task(TASKINIT);//创建Taskinit任务22os_create_task(LEDCTRLTASK1);//创建LEDCtrlTask1任务23os_create_task(LEDCTRLTASK2);//创建LEDCtrlTask2任务24os_create_task(LEDCTRLTASK3);//创建LEDCtrlTask3任务25os_create_task(LEDCTRLTASK4);//创建LEDCtrlTask4任务26os_send_signal(LEDCTRLTASK1);//向LEDCtrlTask1任务发送信号27os_delete_task(TASKINIT);//删除Taskinit任务2829}30/******************************************31*函数名称:LEDCtrlTask132*输入:无33*输出:无34*功能:流水灯任务135*******************************************/36voidLEDCtrlTask1(void)_task_LEDCTRLTASK137{38unsignedchari=0;3940while(1)41{42os_wait(K_SIG,LEDCTRLTASK1,0);//等待LEDCtrlTask1任务信号4344for(i=0;i<=7;i++)45{46LED_PORT|=1<代码分析
在RTX-LED实验代码中存在5个任务:分别是TaskInit、LEDCtrlTask1、LEDCtrlTask2、
LEDCtrlTask3、LEDCtrlTask4。
TaskInit任务负责任务的创建,创建LEDCtrlTask1、LEDCtrlTask2、LEDCtrlTask3、
LEDCtrlTask4这4个控制LED灯任务。当创建这4个任务成功后,在TaskInit任务中删除TaskInit任务。
LEDCtrlTask1任务中的while(1)死循环第一步等待LEDCtrlTask1任务消息,调用os_wait(K_SIG,LEDCTRLTASK1,0)来执行。当接收到LEDCtrlTask1任务消息时,则通过for循环进行LED灯操作,并通过调用os_wait (K_TMO,10,0)进行100ms延时。最后执行发送LEDCtrlTask2任务消息。
LEDCtrlTask2、LEDCtrlTask3、LEDCtrlTask4任务内部函数操作都与LEDCtrlTask1雷同,没有多大的区别。