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

📄 os_flag.lst

📁 stm32+ucos-ii
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   00000068   2081               STRH     R0,[R4, #+8]
    350                           OSFlagFreeList       = pgrp;
   \   0000006A   ........           LDR.W    R0,??DataTable9_2
   \   0000006E   0460               STR      R4,[R0, #+0]
    351                           OS_EXIT_CRITICAL();
   \   00000070   5046               MOV      R0,R10
   \   00000072   ........           BL       OS_CPU_SR_Restore
    352                           *perr                = OS_ERR_NONE;
   \   00000076   0020               MOVS     R0,#+0
   \   00000078   3070               STRB     R0,[R6, #+0]
    353                           pgrp_return          = (OS_FLAG_GRP *)0;  /* Event Flag Group has been deleted        */
   \   0000007A   0020               MOVS     R0,#+0
   \   0000007C   8146               MOV      R9,R0
   \   0000007E   05E0               B.N      ??OSFlagDel_9
    354                       } else {
    355                           OS_EXIT_CRITICAL();
   \                     ??OSFlagDel_8:
   \   00000080   5046               MOV      R0,R10
   \   00000082   ........           BL       OS_CPU_SR_Restore
    356                           *perr                = OS_ERR_TASK_WAITING;
   \   00000086   4920               MOVS     R0,#+73
   \   00000088   3070               STRB     R0,[R6, #+0]
    357                           pgrp_return          = pgrp;
   \   0000008A   A146               MOV      R9,R4
    358                       }
    359                       break;
   \                     ??OSFlagDel_9:
   \   0000008C   2BE0               B.N      ??OSFlagDel_10
    360          
    361                  case OS_DEL_ALWAYS:                                /* Always delete the event flag group       */
    362                       pnode = (OS_FLAG_NODE *)pgrp->OSFlagWaitList;
   \                     ??OSFlagDel_6:
   \   0000008E   6068               LDR      R0,[R4, #+4]
   \   00000090   8046               MOV      R8,R0
    363                       while (pnode != (OS_FLAG_NODE *)0) {          /* Ready ALL tasks waiting for flags        */
   \                     ??OSFlagDel_11:
   \   00000092   B8F1000F           CMP      R8,#+0
   \   00000096   06D0               BEQ.N    ??OSFlagDel_12
    364                           (void)OS_FlagTaskRdy(pnode, (OS_FLAGS)0);
   \   00000098   0021               MOVS     R1,#+0
   \   0000009A   4046               MOV      R0,R8
   \   0000009C   ........           BL       OS_FlagTaskRdy
    365                           pnode = (OS_FLAG_NODE *)pnode->OSFlagNodeNext;
   \   000000A0   D8F80080           LDR      R8,[R8, #+0]
   \   000000A4   F5E7               B.N      ??OSFlagDel_11
    366                       }
    367          #if OS_FLAG_NAME_EN > 0u
    368                       pgrp->OSFlagName     = (INT8U *)(void *)"?";
   \                     ??OSFlagDel_12:
   \   000000A6   ....               ADR.N    R0,??DataTable4  ;; "\?"
   \   000000A8   E060               STR      R0,[R4, #+12]
    369          #endif
    370                       pgrp->OSFlagType     = OS_EVENT_TYPE_UNUSED;
   \   000000AA   0020               MOVS     R0,#+0
   \   000000AC   2070               STRB     R0,[R4, #+0]
    371                       pgrp->OSFlagWaitList = (void *)OSFlagFreeList;/* Return group to free list                */
   \   000000AE   ........           LDR.W    R0,??DataTable9_2
   \   000000B2   0068               LDR      R0,[R0, #+0]
   \   000000B4   6060               STR      R0,[R4, #+4]
    372                       pgrp->OSFlagFlags    = (OS_FLAGS)0;
   \   000000B6   0020               MOVS     R0,#+0
   \   000000B8   2081               STRH     R0,[R4, #+8]
    373                       OSFlagFreeList       = pgrp;
   \   000000BA   ........           LDR.W    R0,??DataTable9_2
   \   000000BE   0460               STR      R4,[R0, #+0]
    374                       OS_EXIT_CRITICAL();
   \   000000C0   5046               MOV      R0,R10
   \   000000C2   ........           BL       OS_CPU_SR_Restore
    375                       if (tasks_waiting == OS_TRUE) {               /* Reschedule only if task(s) were waiting  */
   \   000000C6   FFB2               UXTB     R7,R7            ;; ZeroExt  R7,R7,#+24,#+24
   \   000000C8   012F               CMP      R7,#+1
   \   000000CA   01D1               BNE.N    ??OSFlagDel_13
    376                           OS_Sched();                               /* Find highest priority task ready to run  */
   \   000000CC   ........           BL       OS_Sched
    377                       }
    378                       *perr = OS_ERR_NONE;
   \                     ??OSFlagDel_13:
   \   000000D0   0020               MOVS     R0,#+0
   \   000000D2   3070               STRB     R0,[R6, #+0]
    379                       pgrp_return          = (OS_FLAG_GRP *)0;      /* Event Flag Group has been deleted        */
   \   000000D4   0020               MOVS     R0,#+0
   \   000000D6   8146               MOV      R9,R0
    380                       break;
   \   000000D8   05E0               B.N      ??OSFlagDel_10
    381          
    382                  default:
    383                       OS_EXIT_CRITICAL();
   \                     ??OSFlagDel_7:
   \   000000DA   5046               MOV      R0,R10
   \   000000DC   ........           BL       OS_CPU_SR_Restore
    384                       *perr                = OS_ERR_INVALID_OPT;
   \   000000E0   0720               MOVS     R0,#+7
   \   000000E2   3070               STRB     R0,[R6, #+0]
    385                       pgrp_return          = pgrp;
   \   000000E4   A146               MOV      R9,R4
    386                       break;
    387              }
    388              return (pgrp_return);
   \                     ??OSFlagDel_10:
   \   000000E6   4846               MOV      R0,R9
   \                     ??OSFlagDel_1:
   \   000000E8   BDE8F087           POP      {R4-R10,PC}      ;; return
    389          }
    390          #endif
    391          /*$PAGE*/
    392          /*
    393          *********************************************************************************************************
    394          *                                 GET THE NAME OF AN EVENT FLAG GROUP
    395          *
    396          * Description: This function is used to obtain the name assigned to an event flag group
    397          *
    398          * Arguments  : pgrp      is a pointer to the event flag group.
    399          *
    400          *              pname     is pointer to a pointer to an ASCII string that will receive the name of the event flag
    401          *                        group.
    402          *
    403          *              perr      is a pointer to an error code that can contain one of the following values:
    404          *
    405          *                        OS_ERR_NONE                if the requested task is resumed
    406          *                        OS_ERR_EVENT_TYPE          if 'pevent' is not pointing to an event flag group
    407          *                        OS_ERR_PNAME_NULL          You passed a NULL pointer for 'pname'
    408          *                        OS_ERR_FLAG_INVALID_PGRP   if you passed a NULL pointer for 'pgrp'
    409          *                        OS_ERR_NAME_GET_ISR        if you called this function from an ISR
    410          *
    411          * Returns    : The length of the string or 0 if the 'pgrp' is a NULL pointer.
    412          *********************************************************************************************************
    413          */
    414          
    415          #if OS_FLAG_NAME_EN > 0u

   \                                 In section .text, align 2, keep-with-next
    416          INT8U  OSFlagNameGet (OS_FLAG_GRP   *pgrp,
    417                                INT8U        **pname,
    418                                INT8U         *perr)
    419          {
   \                     OSFlagNameGet:
   \   00000000   2DE9F041           PUSH     {R4-R8,LR}
   \   00000004   0400               MOVS     R4,R0
   \   00000006   0D00               MOVS     R5,R1
   \   00000008   1600               MOVS     R6,R2
    420              INT8U      len;
    421          #if OS_CRITICAL_METHOD == 3u                     /* Allocate storage for CPU status register           */
    422              OS_CPU_SR  cpu_sr = 0u;
   \   0000000A   5FF00008           MOVS     R8,#+0
    423          #endif
    424          
    425          
    426          
    427          #ifdef OS_SAFETY_CRITICAL
    428              if (perr == (INT8U *)0) {
    429                  OS_SAFETY_CRITICAL_EXCEPTION();
    430                  return (0u);
    431              }
    432          #endif
    433          
    434          #if OS_ARG_CHK_EN > 0u
    435              if (pgrp == (OS_FLAG_GRP *)0) {              /* Is 'pgrp' a NULL pointer?                          */
    436                  *perr = OS_ERR_FLAG_INVALID_PGRP;
    437                  return (0u);
    438              }
    439              if (pname == (INT8U **)0) {                   /* Is 'pname' a NULL pointer?                         */
    440                  *perr = OS_ERR_PNAME_NULL;
    441                  return (0u);
    442              }
    443          #endif
    444              if (OSIntNesting > 0u) {                     /* See if trying to call from an ISR                  */
   \   0000000E   ........           LDR.W    R0,??DataTable9_1
   \   00000012   0078               LDRB     R0,[R0, #+0]
   \   00000014   0028               CMP      R0,#+0
   \   00000016   03D0               BEQ.N    ??OSFlagNameGet_0
    445                  *perr = OS_ERR_NAME_GET_ISR;
   \   00000018   1120               MOVS     R0,#+17
   \   0000001A   3070               STRB     R0,[R6, #+0]
    446                  return (0u);
   \   0000001C   0020               MOVS     R0,#+0
   \   0000001E   19E0               B.N      ??OSFlagNameGet_1
    447              }
    448              OS_ENTER_CRITICAL();
   \                     ??OSFlagNameGet_0:
   \   00000020   ........           BL       OS_CPU_SR_Save
   \   00000024   8046               MOV      R8,R0
    449              if (pgrp->OSFlagType != OS_EVENT_TYPE_FLAG) {
   \   00000026   2078               LDRB     R0,[R4, #+0]
   \   00000028   0528               CMP      R0,#+5
   \   0000002A   06D0               BEQ.N    ??OSFlagNameGet_2
    450                  OS_EXIT_CRITICAL();
   \   0000002C   4046               MOV      R0,R8
   \   0000002E   ........           BL       OS_CPU_SR_Restore
    451                  *perr = OS_ERR_EVENT_TYPE;
   \   00000032   0120               MOVS     R0,#+1
   \   00000034   3070               STRB     R0,[R6, #+0]
    452                  return (0u);
   \   00000036   0020               MOVS     R0,#+0
   \   00000038   0CE0               B.N      ??OSFlagNameGet_1
    453              }
    454              *pname = pgrp->OSFlagName;
   \                     ??OSFlagNameGet_2:
   \   0000003A   E068               LDR      R0,[R4, #+12]
   \   0000003C   2860               STR      R0,[R5, #+0]
    455              len    = OS_StrLen(*pname);
   \   0000003E   2868               LDR      R0,[R5, #+0]
   \   00000040   ........           BL       OS_StrLen
   \   00000044   0700               MOVS     R7,R0
    456              OS_EXIT_CRITICAL();
   \   00000046   4046               MOV      R0,R8
   \   00000048   ........           BL       OS_CPU_SR_Restore
    457              *perr  = OS_ERR_NONE;
   \   0000004C   0020               MOVS     R0,#+0
   \   0000004E   3070               STRB     R0,[R6, #+0]
    458              return (len);
   \   00000050   3800               MOVS     R0,R7
   \   00000052   C0B2               UXTB     R0,R0            ;; ZeroExt  R0,R0,#+24,#+24
   \                     ??OSFlagNameGet_1:

⌨️ 快捷键说明

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