• kevin_liu33
    了解作者
  • Visual C++
    开发工具
  • 327KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 108
    下载次数
  • 2005-08-14 15:07
    上传日期
uCOS在51系列MCU上移植的源代码,包括uCOS内核以及用户应用程序例子。无密码,包运行。
ucOS_mcu51.zip
  • ucOS
    255.7KB
  • OS_MBOX.C
    23.4KB
  • ucOS.plg
    5.4KB
  • p3.bmp
    1.4MB
  • OS_CPU_C.C
    13.1KB
  • OS_CPU.H
    4.2KB
  • INCLUDES.H
    1.1KB
  • OS_CORE.C
    43.6KB
  • OS_CPU_A.LST
    20.6KB
  • main.LST
    2.2KB
  • ucOS.lnp
    269B
  • OS_FLAG.C
    43.9KB
  • ucOS.hex
    15.9KB
  • p6.bmp
    1.4MB
  • OS_Q.LST
    46KB
  • main.c
    859B
  • p4.bmp
    1.4MB
  • uCOS_II.H
    46.6KB
  • OS_TASK.C
    35.3KB
  • serial.c
    302B
  • OS_MUTEX.C
    27.3KB
  • OS_CFG.H
    8.1KB
  • p5.bmp
    1.4MB
  • p1.bmp
    1.4MB
  • ucOS.M51
    59.2KB
  • OS_CORE.LST
    60.4KB
  • OS_CPU_A.ASM
    8.3KB
  • serial.h
    402B
  • OS_SEM.C
    19.1KB
  • OS_Q.C
    33.9KB
  • STARTUP.A51
    5KB
  • www.pudn.com.txt
    218B
  • ucOS.Uv2
    2.8KB
  • p2.bmp
    1.4MB
  • OS_TIME.C
    9.7KB
  • OS_MEM.C
    13.8KB
  • ucOS.Opt
    1.9KB
  • OS_MEM.LST
    19KB
  • uCOS_II.C
    1KB
内容介绍
/* ********************************************************************************************************* * uC/OS-II * The Real-Time Kernel * EVENT FLAG MANAGEMENT * * (c) Copyright 2001, Jean J. Labrosse, Weston, FL * All Rights Reserved * * File : OS_FLAG.C * By : Jean J. Labrosse ********************************************************************************************************* */ #ifndef OS_MASTER_FILE #include "INCLUDES.H" #endif #if (OS_VERSION >= 251) && (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0) /* ********************************************************************************************************* * LOCAL PROTOTYPES ********************************************************************************************************* */ static void OS_FlagBlock(OS_FLAG_GRP *pgrp, OS_FLAG_NODE *pnode, OS_FLAGS flags, INT8U wait_type, INT16U timeout) reentrant; static BOOLEAN OS_FlagTaskRdy(OS_FLAG_NODE *pnode, OS_FLAGS flags_rdy) reentrant; /*$PAGE*/ /* ********************************************************************************************************* * CHECK THE STATUS OF FLAGS IN AN EVENT FLAG GROUP * * Description: This function is called to check the status of a combination of bits to be set or cleared * in an event flag group. Your application can check for ANY bit to be set/cleared or ALL * bits to be set/cleared. * * This call does not block if the desired flags are not present. * * Arguments : pgrp is a pointer to the desired event flag group. * * flags Is a bit pattern indicating which bit(s) (i.e. flags) you wish to check. * The bits you want are specified by setting the corresponding bits in * 'flags'. e.g. if your application wants to wait for bits 0 and 1 then * 'flags' would contain 0x03. * * wait_type specifies whether you want ALL bits to be set/cleared or ANY of the bits * to be set/cleared. * You can specify the following argument: * * OS_FLAG_WAIT_CLR_ALL You will check ALL bits in 'flags' to be clear (0) * OS_FLAG_WAIT_CLR_ANY You will check ANY bit in 'flags' to be clear (0) * OS_FLAG_WAIT_SET_ALL You will check ALL bits in 'flags' to be set (1) * OS_FLAG_WAIT_SET_ANY You will check ANY bit in 'flags' to be set (1) * * NOTE: Add OS_FLAG_CONSUME if you want the event flag to be 'consumed' by * the call. Example, to wait for any flag in a group AND then clear * the flags that are present, set 'wait_type' to: * * OS_FLAG_WAIT_SET_ANY + OS_FLAG_CONSUME * * err is a pointer to an error code and can be: * OS_NO_ERR No error * OS_ERR_EVENT_TYPE You are not pointing to an event flag group * OS_FLAG_ERR_WAIT_TYPE You didn't specify a proper 'wait_type' argument. * OS_FLAG_INVALID_PGRP You passed a NULL pointer instead of the event flag * group handle. * OS_FLAG_ERR_NOT_RDY The desired flags you are waiting for are not * available. * * Returns : The state of the flags in the event flag group. * * Called from: Task or ISR ********************************************************************************************************* */ #if OS_FLAG_ACCEPT_EN > 0 OS_FLAGS OSFlagAccept (OS_FLAG_GRP *pgrp, OS_FLAGS flags, INT8U wait_type, INT8U *err) reentrant { #if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */ OS_CPU_SR cpu_sr; #endif OS_FLAGS flags_cur; OS_FLAGS flags_rdy; BOOLEAN consume; #if OS_ARG_CHK_EN > 0 if (pgrp == (OS_FLAG_GRP *)0) { /* Validate 'pgrp' */ *err = OS_FLAG_INVALID_PGRP; return ((OS_FLAGS)0); } if (pgrp->OSFlagType != OS_EVENT_TYPE_FLAG) { /* Validate event block type */ *err = OS_ERR_EVENT_TYPE; return ((OS_FLAGS)0); } #endif if (wait_type & OS_FLAG_CONSUME) { /* See if we need to consume the flags */ wait_type &= ~OS_FLAG_CONSUME; consume = TRUE; } else { consume = FALSE; } /*$PAGE*/ *err = OS_NO_ERR; /* Assume NO error until proven otherwise. */ OS_ENTER_CRITICAL(); switch (wait_type) { case OS_FLAG_WAIT_SET_ALL: /* See if all required flags are set */ flags_rdy = pgrp->OSFlagFlags & flags; /* Extract only the bits we want */ if (flags_rdy == flags) { /* Must match ALL the bits that we want */ if (consume == TRUE) { /* See if we need to consume the flags */ pgrp->OSFlagFlags &= ~flags_rdy; /* Clear ONLY the flags that we wanted */ } } else { *err = OS_FLAG_ERR_NOT_RDY; } flags_cur = pgrp->OSFlagFlags; /* Will return the state of the group */ OS_EXIT_CRITICAL(); break; case OS_FLAG_WAIT_SET_ANY: flags_rdy = pgrp->OSFlagFlags & flags; /* Extract only the bits we want */ if (flags_rdy != (OS_FLAGS)0) { /* See if any flag set */ if (consume == TRUE) { /* See if we need to consume the flags */ pgrp->OSFlagFlags &= ~flags_rdy; /* Clear ONLY the flags that we got */ } } else { *err = OS_FLAG_ERR_NOT_RDY; } flags_cur = pgrp->OSFlagFlags; /* Will return the state of the group */ OS_EXIT_CRITICAL(); break; #if OS_FLAG_WAIT_CLR_EN > 0 case OS_FLAG_WAIT_CLR_ALL: /* See if all required flags are cleared */ flags_rdy = ~pgrp->OSFlagFlags & flags; /* Extract only the bits we want */ if (flags_rdy == flags) { /* Must match ALL the bits that we want */ if (consume == TRUE) { /* See if we need to consume the flags */ pgrp->OSFlagFlags |= flags_rdy; /* Set ONLY the flags that we wanted */ } } else { *err = OS_FLAG_ERR_NOT_RDY; } flags_cur = pgrp->OSFlagFlags; /* Will return the state of the group */ OS_EXIT_CRITICAL(); break; case OS_FLAG_WAIT_CLR_ANY: flags_rdy = ~pgrp->OSFlagFlags & flags; /* Extract only the bits we want */ if (flags_rdy != (OS_FLAGS)0) { /* See if any flag cleared */ if (consume == TRUE) { /* See if we need to consume the fl
评论
    相关推荐
    • 51ucos.zip
      15系列单片机移植UCOSII系统,学习移植操作系统UCSOII的学习笔记,共同学习,一起进步
    • ucOSII.rar
      嵌入式实时实时操作系统,下载打开后直接解压使用
    • uCOS_51.rar
      ucos ii 移植到51上;仅供学习;无实际应用价值。
    • 51_uCOSII.zip
      基于51移植uCOSII系统(仅供参考,欢迎志同道合的朋友共同研究)。
    • uCOS_51.rar
      ucos移植51单片机 啥地方发生地方撒打发士大夫按时
    • ucos-51移植
      实现ucos51单片机上的移植,实现代码的高效使用
    • ucos移植到51单片机
      ucos移植到51单片机,珍藏共享,希望对大家有用。ucos移植到51单片机,珍藏共享,希望对大家有用。
    • UCOS - 51移植
      UCOS-II想单片机的移植例程,包含Keil 工程和Protues 仿真。
    • 51单片机uCOSII
      关于单片机51uCOSII!!!希望有用。
    • ucos51移植心得
      详细讲解ucos51单片机中的移植过程