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

📄 os_flag.lst

📁 stm32+ucos-ii
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   00000048   002E               CMP      R6,#+0
   \   0000004A   35D0               BEQ.N    ??OSFlagAccept_4
   \   0000004C   022E               CMP      R6,#+2
   \   0000004E   03D0               BEQ.N    ??OSFlagAccept_5
   \   00000050   4BD3               BCC.N    ??OSFlagAccept_6
   \   00000052   032E               CMP      R6,#+3
   \   00000054   18D0               BEQ.N    ??OSFlagAccept_7
   \   00000056   61E0               B.N      ??OSFlagAccept_8
    134                  case OS_FLAG_WAIT_SET_ALL:                         /* See if all required flags are set        */
    135                       flags_rdy = (OS_FLAGS)(pgrp->OSFlagFlags & flags);     /* Extract only the bits we want   */
   \                     ??OSFlagAccept_5:
   \   00000058   2089               LDRH     R0,[R4, #+8]
   \   0000005A   2840               ANDS     R0,R5,R0
   \   0000005C   8046               MOV      R8,R0
    136                       if (flags_rdy == flags) {                     /* Must match ALL the bits that we want     */
   \   0000005E   1FFA88F8           UXTH     R8,R8            ;; ZeroExt  R8,R8,#+16,#+16
   \   00000062   ADB2               UXTH     R5,R5            ;; ZeroExt  R5,R5,#+16,#+16
   \   00000064   A845               CMP      R8,R5
   \   00000066   09D1               BNE.N    ??OSFlagAccept_9
    137                           if (consume == OS_TRUE) {                 /* See if we need to consume the flags      */
   \   00000068   5FFA8AFA           UXTB     R10,R10          ;; ZeroExt  R10,R10,#+24,#+24
   \   0000006C   BAF1010F           CMP      R10,#+1
   \   00000070   06D1               BNE.N    ??OSFlagAccept_10
    138                               pgrp->OSFlagFlags &= (OS_FLAGS)~flags_rdy;     /* Clear ONLY the flags we wanted  */
   \   00000072   2089               LDRH     R0,[R4, #+8]
   \   00000074   30EA0800           BICS     R0,R0,R8
   \   00000078   2081               STRH     R0,[R4, #+8]
   \   0000007A   01E0               B.N      ??OSFlagAccept_10
    139                           }
    140                       } else {
    141                           *perr = OS_ERR_FLAG_NOT_RDY;
   \                     ??OSFlagAccept_9:
   \   0000007C   7020               MOVS     R0,#+112
   \   0000007E   3870               STRB     R0,[R7, #+0]
    142                       }
    143                       OS_EXIT_CRITICAL();
   \                     ??OSFlagAccept_10:
   \   00000080   5846               MOV      R0,R11
   \   00000082   ........           BL       OS_CPU_SR_Restore
    144                       break;
   \   00000086   50E0               B.N      ??OSFlagAccept_11
    145          
    146                  case OS_FLAG_WAIT_SET_ANY:
    147                       flags_rdy = (OS_FLAGS)(pgrp->OSFlagFlags & flags);     /* Extract only the bits we want   */
   \                     ??OSFlagAccept_7:
   \   00000088   2089               LDRH     R0,[R4, #+8]
   \   0000008A   2840               ANDS     R0,R5,R0
   \   0000008C   8046               MOV      R8,R0
    148                       if (flags_rdy != (OS_FLAGS)0) {               /* See if any flag set                      */
   \   0000008E   1FFA88F8           UXTH     R8,R8            ;; ZeroExt  R8,R8,#+16,#+16
   \   00000092   B8F1000F           CMP      R8,#+0
   \   00000096   09D0               BEQ.N    ??OSFlagAccept_12
    149                           if (consume == OS_TRUE) {                 /* See if we need to consume the flags      */
   \   00000098   5FFA8AFA           UXTB     R10,R10          ;; ZeroExt  R10,R10,#+24,#+24
   \   0000009C   BAF1010F           CMP      R10,#+1
   \   000000A0   06D1               BNE.N    ??OSFlagAccept_13
    150                               pgrp->OSFlagFlags &= (OS_FLAGS)~flags_rdy;     /* Clear ONLY the flags we got     */
   \   000000A2   2089               LDRH     R0,[R4, #+8]
   \   000000A4   30EA0800           BICS     R0,R0,R8
   \   000000A8   2081               STRH     R0,[R4, #+8]
   \   000000AA   01E0               B.N      ??OSFlagAccept_13
    151                           }
    152                       } else {
    153                           *perr = OS_ERR_FLAG_NOT_RDY;
   \                     ??OSFlagAccept_12:
   \   000000AC   7020               MOVS     R0,#+112
   \   000000AE   3870               STRB     R0,[R7, #+0]
    154                       }
    155                       OS_EXIT_CRITICAL();
   \                     ??OSFlagAccept_13:
   \   000000B0   5846               MOV      R0,R11
   \   000000B2   ........           BL       OS_CPU_SR_Restore
    156                       break;
   \   000000B6   38E0               B.N      ??OSFlagAccept_11
    157          
    158          #if OS_FLAG_WAIT_CLR_EN > 0u
    159                  case OS_FLAG_WAIT_CLR_ALL:                         /* See if all required flags are cleared    */
    160                       flags_rdy = (OS_FLAGS)~pgrp->OSFlagFlags & flags;    /* Extract only the bits we want     */
   \                     ??OSFlagAccept_4:
   \   000000B8   2089               LDRH     R0,[R4, #+8]
   \   000000BA   35EA0000           BICS     R0,R5,R0
   \   000000BE   8046               MOV      R8,R0
    161                       if (flags_rdy == flags) {                     /* Must match ALL the bits that we want     */
   \   000000C0   1FFA88F8           UXTH     R8,R8            ;; ZeroExt  R8,R8,#+16,#+16
   \   000000C4   ADB2               UXTH     R5,R5            ;; ZeroExt  R5,R5,#+16,#+16
   \   000000C6   A845               CMP      R8,R5
   \   000000C8   09D1               BNE.N    ??OSFlagAccept_14
    162                           if (consume == OS_TRUE) {                 /* See if we need to consume the flags      */
   \   000000CA   5FFA8AFA           UXTB     R10,R10          ;; ZeroExt  R10,R10,#+24,#+24
   \   000000CE   BAF1010F           CMP      R10,#+1
   \   000000D2   06D1               BNE.N    ??OSFlagAccept_15
    163                               pgrp->OSFlagFlags |= flags_rdy;       /* Set ONLY the flags that we wanted        */
   \   000000D4   2089               LDRH     R0,[R4, #+8]
   \   000000D6   58EA0000           ORRS     R0,R8,R0
   \   000000DA   2081               STRH     R0,[R4, #+8]
   \   000000DC   01E0               B.N      ??OSFlagAccept_15
    164                           }
    165                       } else {
    166                           *perr = OS_ERR_FLAG_NOT_RDY;
   \                     ??OSFlagAccept_14:
   \   000000DE   7020               MOVS     R0,#+112
   \   000000E0   3870               STRB     R0,[R7, #+0]
    167                       }
    168                       OS_EXIT_CRITICAL();
   \                     ??OSFlagAccept_15:
   \   000000E2   5846               MOV      R0,R11
   \   000000E4   ........           BL       OS_CPU_SR_Restore
    169                       break;
   \   000000E8   1FE0               B.N      ??OSFlagAccept_11
    170          
    171                  case OS_FLAG_WAIT_CLR_ANY:
    172                       flags_rdy = (OS_FLAGS)~pgrp->OSFlagFlags & flags;   /* Extract only the bits we want      */
   \                     ??OSFlagAccept_6:
   \   000000EA   2089               LDRH     R0,[R4, #+8]
   \   000000EC   35EA0000           BICS     R0,R5,R0
   \   000000F0   8046               MOV      R8,R0
    173                       if (flags_rdy != (OS_FLAGS)0) {               /* See if any flag cleared                  */
   \   000000F2   1FFA88F8           UXTH     R8,R8            ;; ZeroExt  R8,R8,#+16,#+16
   \   000000F6   B8F1000F           CMP      R8,#+0
   \   000000FA   09D0               BEQ.N    ??OSFlagAccept_16
    174                           if (consume == OS_TRUE) {                 /* See if we need to consume the flags      */
   \   000000FC   5FFA8AFA           UXTB     R10,R10          ;; ZeroExt  R10,R10,#+24,#+24
   \   00000100   BAF1010F           CMP      R10,#+1
   \   00000104   06D1               BNE.N    ??OSFlagAccept_17
    175                               pgrp->OSFlagFlags |= flags_rdy;       /* Set ONLY the flags that we got           */
   \   00000106   2089               LDRH     R0,[R4, #+8]
   \   00000108   58EA0000           ORRS     R0,R8,R0
   \   0000010C   2081               STRH     R0,[R4, #+8]
   \   0000010E   01E0               B.N      ??OSFlagAccept_17
    176                           }
    177                       } else {
    178                           *perr = OS_ERR_FLAG_NOT_RDY;
   \                     ??OSFlagAccept_16:
   \   00000110   7020               MOVS     R0,#+112
   \   00000112   3870               STRB     R0,[R7, #+0]
    179                       }
    180                       OS_EXIT_CRITICAL();
   \                     ??OSFlagAccept_17:
   \   00000114   5846               MOV      R0,R11
   \   00000116   ........           BL       OS_CPU_SR_Restore
    181                       break;
   \   0000011A   06E0               B.N      ??OSFlagAccept_11
    182          #endif
    183          
    184                  default:
    185                       OS_EXIT_CRITICAL();
   \                     ??OSFlagAccept_8:
   \   0000011C   5846               MOV      R0,R11
   \   0000011E   ........           BL       OS_CPU_SR_Restore
    186                       flags_rdy = (OS_FLAGS)0;
   \   00000122   0020               MOVS     R0,#+0
   \   00000124   8046               MOV      R8,R0
    187                       *perr     = OS_ERR_FLAG_WAIT_TYPE;
   \   00000126   6F20               MOVS     R0,#+111
   \   00000128   3870               STRB     R0,[R7, #+0]
    188                       break;
    189              }
    190              return (flags_rdy);
   \                     ??OSFlagAccept_11:
   \   0000012A   4046               MOV      R0,R8
   \   0000012C   80B2               UXTH     R0,R0            ;; ZeroExt  R0,R0,#+16,#+16
   \                     ??OSFlagAccept_1:
   \   0000012E   BDE8F28F           POP      {R1,R4-R11,PC}   ;; return
    191          }
    192          #endif
    193          
    194          /*$PAGE*/
    195          /*
    196          *********************************************************************************************************
    197          *                                           CREATE AN EVENT FLAG
    198          *
    199          * Description: This function is called to create an event flag group.
    200          *
    201          * Arguments  : flags         Contains the initial value to store in the event flag group.
    202          *
    203          *              perr          is a pointer to an error code which will be returned to your application:
    204          *                               OS_ERR_NONE               if the call was successful.
    205          *                               OS_ERR_CREATE_ISR         if you attempted to create an Event Flag from an
    206          *                                                         ISR.
    207          *                               OS_ERR_FLAG_GRP_DEPLETED  if there are no more event flag groups
    208          *
    209          * Returns    : A pointer to an event flag group or a NULL pointer if no more groups are available.
    210          *
    211          * Called from: Task ONLY
    212          *********************************************************************************************************
    213          */
    214          

   \                                 In section .text, align 2, keep-with-next
    215          OS_FLAG_GRP  *OSFlagCreate (OS_FLAGS  flags,
    216                                      INT8U    *perr)
    217          {
   \                     OSFlagCreate:
   \   00000000   F8B5               PUSH     {R3-R7,LR}
   \   00000002   0400               MOVS     R4,R0
   \   00000004   0D00               MOVS     R5,R1
    218              OS_FLAG_GRP *pgrp;
    219          #if OS_CRITICAL_METHOD == 3u                        /* Allocate storage for CPU status register        */
    220              OS_CPU_SR    cpu_sr = 0u;
   \   00000006   0027               MOVS     R7,#+0
    221          #endif
    222          
    223          
    224          
    225          #ifdef OS_SAFETY_CRITICAL
    226              if (perr == (INT8U *)0) {
    227                  OS_SAFETY_CRITICAL_EXCEPTION();
    228                  return ((OS_FLAG_GRP *)0);
    229              }
    230          #endif
    231          
    232          #ifdef OS_SAFETY_CRITICAL_IEC61508
    233              if (OSSafetyCriticalStartFlag == OS_TRUE) {

⌨️ 快捷键说明

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