⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 说明.txt

📁 UCOS-II在凌阳61单片机上的移植 代码还附带三个测试例子
💻 TXT
字号:

1.在本移植中仅仅建立了两个任务,用于测试移植的结果

2.在B口接上8个发光二极管,用于测试输出,制作比较简易,并且结果明显

3.A任务点亮B口高4位,B任务点亮B口低四位

一期:
1.使用延时实现A,B口高低四位的输出
  A任务控制高四位输出低电位,低四位输出高电位
  A任务:                           B任务:
  if(temp==0)                       if(temp==1)
  {                                 {
   display(0xff0f);                  display(0xfff0);
   temp++;}                          temp++;}
   
  OSTimeDly(32);                     OSTimeDly(64);
 }                                  }
2.任务流程:

 |_|__________|__________|_|__________|__________|_|________
     
     I.   首先A任务运行,点亮高低位,挂起32个ticks,系统调度至B任务

     II.  高四位马上被B任务熄灭并点亮低四位,
          B任务挂起64个ticks,系统切换到空闲任务

     III. 等到32个ticks到时,任务A运行,点亮高四位熄灭低四位

     IV.  等到64个ticks到时,任务A,B都会进入就绪态,任务A优先级较高会得到运行,重复1.2.3步骤

3.缺陷:在64个ticks到来时,有闪烁出现(人眼看不到),应用任务仅仅使用了
  
  延时功能;
  
4.下期改进:消除闪烁现象;使用其他系统功能实现

二期:
1.使用信号量实现
  初始化信号量为 1,表示当前可用
  A任务:                             B任务:
  OSSemPend(sem,0,&erra);             OSSemPend(sem,0,&errb);
  display(0xff0f);                    display(0xfff0);
  OSTimeDly(64);                      OSTimeDly(64);
  OSSemPost(sem);                     OSSemPost(sem);
2.任务流程:
 |__________|__________|______
 
 I.  首先A任务运行,获得信号量的使用,使其减 1,向B口写数据点亮高四位熄灭低四位,接着挂起64个tick,此时会发
     生任务调度,任务B运行,任务B首先申请信号量,但是此时A任务没有释放信号量,B任务进入等待状态,同时信号量
     申请函数将B任务置入该信号量的等待列表
 II. 系统调度到空闲任务
 III.等到64个tick到达时,系统调度使任务A重新得以运行,这时A任务调用信号量释放函数,该函数会发现有任务在等待,
     立即将在等待该信号量的B任务置入就绪态,但不对该信号量加 1(任务B占用),调用系统调度函数,但此时A任务仍
     处于运行态,优先级比B高,故B任务不能立即运行,进入就绪态继续等待运行,不发生任务调度
 IV. A任务继续运行,申请信号量,但此时信号量被B任务占用,进入该信号量的等待列表,故进入等待态,系统调度至B任
     务(在就绪态),使任务B运行,B任务向B口写数据熄灭任务A点亮的高四位,同时点亮低四位,接着也挂起64个tick,
     发生任务调度,因为此时没有释放信号量,故A任务仍不能运行
 V . 系统调度到空闲任务
 VI. 等到64个tick到达时,系统调度使任务B重新得以运行,这时B任务调用信号量释放函数,该函数会发现有任务在等待,
     立即将在等待该信号量的A任务置入就绪态,但不对该信号量加 1(任务A占用),调用系统调度函数,A任务优先级较
     高,可以运行,使B任务挂起,等待运行,系统使A任务运行
 VII.重复以上步骤 
 
 3.缺陷:
  
 4.下期改进:
   尝试使用其他系统功能实现,增加任务

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -