0426

来源:互联网 发布:江门网络推广公司 编辑:程序博客网 时间:2024/05/20 12:46

Using Memory Partitions

  1. 图 F7.5是一个演示如何使用µC/OS-II中的动态分配内存功能,以及利用它进行消息传递[见第6章]的例子。程序清单 L7.8是这个例子中两个任务的示意代码,其中一些重要代码的标号和图 F7.5中括号内用数字标识的动作是相对应的。  
  2. 第一个任务读取并检查模拟输入量的值(如气压、温度、电压等),如果其超过了一定的阈值,就向第二个任务发送一个消息。该消息中含有时间信息、出错的通道号和错误代码等可以想象的任何可能的信息。  
  3. 错误处理程序是该例子的中心。任何任务、中断服务子程序都可以向该任务发送出错消息。错误处理程序则负责在显示设备上显示出错信息,在磁盘上登记出错记录,或者启动另一个任务对错误进行纠正等。  

 F7.5 使用动态内存分配——Figure 7.5

 

  1. 图 F7.5 使用动态内存分配——Figure 7.5  
  2.   
  3. 程序清单 L7.8 内存分配的例子——扫描模拟量的输入和报告出错  
  4. AnalogInputTask()  
  5. {  
  6.     for (;;) {  
  7.         for (所有的模拟量都有输入) {  
  8.             读入模拟量输入值;                                             (1)  
  9.             if (模拟量超过阈值) {  
  10.                 得到一个内存块;                                           (2)  
  11.                 得到当前系统时间 (以时钟节拍为单位);                   (3)  
  12.                 将下列各项存入内存块:           (4)  
  13.                     系统时间 (时间戳);  
  14.                     超过阈值的通道号;  
  15.                     错误代码;  
  16.                     错误等级;  
  17.                     等.  
  18.                 向错误队列发送错误消息;                      (5)  
  19.                     (一个指向包含上述各项的内存块的指针)  
  20.             }  
  21.         }  
  22.         延时任务,直到要再次对模拟量进行采样时为止;  
  23.     }  
  24. }  
  25.   
  26.   
  27.   
  28. ErrorHandlerTask()  
  29. {  
  30.     for (;;) {  
  31.         等待错误队列的消息;                                (6)  
  32.             (得到指向包含有关错误数据的内存块的指针)  
  33.         读入消息,并根据消息的内容执行相应的操作;          (7)  
  34.         将内存块放回到相应的内存分区中;                    (8)  
  35.     }  
  36. }


0 0