Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1612450
  • 博文数量: 245
  • 博客积分: 10378
  • 博客等级: 上将
  • 技术积分: 2571
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-27 08:19
文章分类

全部博文(245)

文章存档

2013年(4)

2012年(8)

2011年(13)

2010年(68)

2009年(152)

分类: C/C++

2009-09-16 17:46:02



1.  main函数的结构

void main (void)
{
    初始化系统的硬件;
    OSInit();
    任务的建立,消息机制的建立;
    OSStart();
}
这里需要的是在OSStart()执行之前不得启动中断,硬件系统还不能工作.必须先让软件系统进入工作状态后才行.

2. 中断的结构

ISR:
    {
        保存处理器寄存器的值;
        调用OSIntEnter();

        执行用户的工作;
        调用OSIntExit();
        恢复处理器寄存器的值;
        RTI;
    }
用户的中断形式和以前一样,没有什么大的变化,仅仅是在原来用户ISR的基础上在固定的位置加了两个函数:OSIntEnter(), OSIntExit().

3. 各个任务的结构

void YourTask (void)
{
for(;;) 
{
用户代码
调用的系统服务
}
}
在任务启动函数执行完后,系统会切换到最高优先级的任务去执行,此时,可以将系统硬件部分的启动放在该任务的最前边,仅仅是启动时执行一次,主要是启动系统的节拍中断,或者一些必须在多任务系统调度后才能初始化的部分,使系统的真正开始工作,达到软件硬件的基本同步.
Void    HighestPrioTask(void)
{
  OSStartHardware();
  For (;;)
  {
      用户代码
      调用的系统服务
  }
}
用户可以按照这些格式去编写自己的任务,建立自己的应用系统.


阅读(1452) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~