转一个带消息机制的单片机操作系统

2020-01-14 18:52发布

本帖最后由 avr9299 于 2012-4-13 21:26 编辑

          这个系统很容易移植到别的单片机上

               具有一些C语言基础的,只要1,2天就可以直接上手使用,之后自己可以直
        接调试。
        很多朋友都感到这套系统简单易学,性能不错,尤其是它舍弃了对于单片机51来讲是
        华而不实的RTOS,而又不是采用一般大家平常的大循环设计,并且他引入了手机设计中非
        常重要的平台的概念(DP51为其硬件平台),系统的内核类似于RTOS,内部又有消息
        机制,特别灵活,并且支持消息的优先级。
        他们希望我把他推广,今天本人做了一些修改后把他介绍给大家。

               介绍:
        很多人往往为了用RTOS而用RTOS,其实很多很多的项目
        一般的设计都已经可以了的,RTOS显得有些画蛇添足。对于一般的设计思路,往往要
        做很多的工作,甚至整个软件的结构不知道怎么搭建,McuSystem主要就是解决以上的
        问题提出的,真正为实用服务的一个系统,它全部用C语言编写,结构非常清晰,核心
        是它的消息机制,解决很多普通设计中的一些问题,包括并发事件问题。并且这个消息
        还支持优先级。我相信只要具有一般C语言水平的都能很快的看懂。
        系统用Source Insight做编辑,keil为编译,DPFLASH下载,这个成了标准配置,目录
        建在D:MCU51。这个程序是让大家去修改,以适合自己的平台用。
        现在简单的说一下文件的构成:boot.c是入口程序,define.h是一些宏定义,system.c
        是系统内核,包括节拍,消息都在这个里面,routine.c为例行程序,如键盘,数码管
        显示都在这个里面控制,键盘是采用扫描的。
               面向对象:
        中等规模的系统,代码一般在2,30K,
        初学单片机并且想更上一层楼的,或者有些基础,想减少工作量的。
       
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
50条回答
avr9299
2020-01-16 06:44
261854681 发表于 2012-4-13 23:05
感谢大侠!请教能否说一下具体怎么使用么?

从system.c的Timer2Server慢慢看吧
/******************************************************************************************
*函数名:                Timer2Server
*参数:                        无
*返回值:                无
*描述:                        定时器2中断服务程序,每5ms进入一次
*编写:                        王绍伟
*版本信息:                V1.0                        2003年8月15日
******************************************************************************************/
static void Timer2Server(void) interrupt 5 /*不要带指定寄存器,否则将产生移位指令出错*/
{
        ET2 = 0;
        TF2 = 0;                        /*状态位必须得清除,否则中断占用时间很长*/
        /***************/

        smart_timer_server();        /*r进行智能时钟服务程序*/
       
        if(++RTCCounter == 200)
        {
                RTCCounter = 0;
                rtc_soft_routine();                        /*定时器例行程序*/
        }

        routine_process();                /*r运行例行任务程序*/                       键盘扫描与数码管显示,
        /****************/
        ET2 = 1;
}

一周热门 更多>