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

📄 os_core.txt

📁 stm32 ucos 精简移殖版本 不需作任何修改直接便可运行。包含串口 定时器
💻 TXT
📖 第 1 页 / 共 5 页
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 919] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o.\output\os_core.o --depend=.\output\os_core.d --device=DARMSTM --apcs=interwork -O1 -I. -I..\BSP -I..\..\..\..\..\uCOS-II\Ports\arm-cortex-m3\Generic\RealView -I..\..\..\..\..\uCOS-II\Source -I..\..\..\..\..\CPU\ST\STM32\inc -I..\..\..\..\..\uC-CPU -I..\..\..\..\..\uC-CPU\Arm-Cortex-M3\RealView -I..\..\..\..\..\uC-LIB -IC:\Keil\ARM\INC\ST\STM32F10x --omf_browse=.\output\os_core.crf ..\..\..\..\..\uCOS-II\Source\os_core.c]
                          THUMB

                          AREA ||.text||, CODE, READONLY, ALIGN=2

                  OS_StrCopy PROC
;;;1700   
;;;1701       len = 0;
000000  2200              MOVS     r2,#0
;;;1702       while (*psrc != OS_ASCII_NUL) {
000002  e004              B        |L1.14|
                  |L1.4|
;;;1703           *pdest++ = *psrc++;
000004  f800f800          STRB     r3,[r0],#1
000008  1c49              ADDS     r1,r1,#1
;;;1704           len++;
00000a  1c52              ADDS     r2,r2,#1
00000c  b2d2              UXTB     r2,r2
                  |L1.14|
00000e  780b              LDRB     r3,[r1,#0]            ;1702
000010  2b00              CMP      r3,#0                 ;1702
000012  d1f7              BNE      |L1.4|
;;;1705       }
;;;1706       *pdest = OS_ASCII_NUL;
000014  2100              MOVS     r1,#0
000016  7001              STRB     r1,[r0,#0]
;;;1707       return (len);
000018  4610              MOV      r0,r2
;;;1708   }
00001a  4770              BX       lr
;;;1709   #endif
                          ENDP

                  OSEventNameGet PROC
;;;109    INT8U  OSEventNameGet (OS_EVENT *pevent, INT8U *pname, INT8U *perr)
;;;110    {
00001c  e92de92d          PUSH     {r4-r8,lr}
000020  4605              MOV      r5,r0
000022  460e              MOV      r6,r1
000024  4614              MOV      r4,r2
;;;111        INT8U      len;
;;;112    #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
;;;113        OS_CPU_SR  cpu_sr = 0;
;;;114    #endif
;;;115    
;;;116    
;;;117    
;;;118    #if OS_ARG_CHK_EN > 0
;;;119        if (perr == (INT8U *)0) {                    /* Validate 'perr'                                    */
;;;120            return (0);
;;;121        }
;;;122        if (pevent == (OS_EVENT *)0) {               /* Is 'pevent' a NULL pointer?                        */
;;;123            *perr = OS_ERR_PEVENT_NULL;
;;;124            return (0);
;;;125        }
;;;126        if (pname == (INT8U *)0) {                   /* Is 'pname' a NULL pointer?                         */
;;;127            *perr = OS_ERR_PNAME_NULL;
;;;128            return (0);
;;;129        }
;;;130    #endif
;;;131        if (OSIntNesting > 0) {                      /* See if trying to call from an ISR                  */
000026  48ff              LDR      r0,|L1.1060|
000028  7880              LDRB     r0,[r0,#2]  ; OSIntNesting
00002a  b120              CBZ      r0,|L1.54|
;;;132            *perr  = OS_ERR_NAME_GET_ISR;
00002c  2011              MOVS     r0,#0x11
00002e  7020              STRB     r0,[r4,#0]
;;;133            return (0);
000030  2000              MOVS     r0,#0
                  |L1.50|
;;;134        }
;;;135        switch (pevent->OSEventType) {
;;;136            case OS_EVENT_TYPE_SEM:
;;;137            case OS_EVENT_TYPE_MUTEX:
;;;138            case OS_EVENT_TYPE_MBOX:
;;;139            case OS_EVENT_TYPE_Q:
;;;140                 break;
;;;141    
;;;142            default:
;;;143                 *perr = OS_ERR_EVENT_TYPE;
;;;144                 return (0);
;;;145        }
;;;146        OS_ENTER_CRITICAL();
;;;147        len   = OS_StrCopy(pname, pevent->OSEventName);   /* Copy name from OS_EVENT                       */
;;;148        OS_EXIT_CRITICAL();
;;;149        *perr = OS_ERR_NONE;
;;;150        return (len);
;;;151    }
000032  e8bde8bd          POP      {r4-r8,pc}
                  |L1.54|
000036  7828              LDRB     r0,[r5,#0]            ;135
000038  2801              CMP      r0,#1                 ;135
00003a  d005              BEQ      |L1.72|
00003c  2802              CMP      r0,#2                 ;135
00003e  d003              BEQ      |L1.72|
000040  2803              CMP      r0,#3                 ;135
000042  d001              BEQ      |L1.72|
000044  2804              CMP      r0,#4                 ;135
000046  d10f              BNE      |L1.104|
                  |L1.72|
000048  f7fff7ff          BL       OS_CPU_SR_Save
00004c  4607              MOV      r7,r0                 ;146
00004e  f105f105          ADD      r1,r5,#0xf            ;147
000052  4630              MOV      r0,r6                 ;147
000054  f7fff7ff          BL       OS_StrCopy
000058  4605              MOV      r5,r0                 ;147
00005a  4638              MOV      r0,r7                 ;148
00005c  f7fff7ff          BL       OS_CPU_SR_Restore
000060  2000              MOVS     r0,#0                 ;149
000062  7020              STRB     r0,[r4,#0]            ;149
000064  4628              MOV      r0,r5                 ;150
000066  e7e4              B        |L1.50|
                  |L1.104|
000068  2001              MOVS     r0,#1                 ;143
00006a  7020              STRB     r0,[r4,#0]            ;143
00006c  2000              MOVS     r0,#0                 ;144
00006e  e7e0              B        |L1.50|
;;;152    #endif
                          ENDP

                  OS_StrLen PROC
;;;1732   
;;;1733       len = 0;
000070  2100              MOVS     r1,#0
;;;1734       while (*psrc != OS_ASCII_NUL) {
000072  e002              B        |L1.122|
                  |L1.116|
;;;1735           psrc++;
000074  1c40              ADDS     r0,r0,#1
;;;1736           len++;
000076  1c49              ADDS     r1,r1,#1
000078  b2c9              UXTB     r1,r1
                  |L1.122|
00007a  7802              LDRB     r2,[r0,#0]            ;1734
00007c  2a00              CMP      r2,#0                 ;1734
00007e  d1f9              BNE      |L1.116|
;;;1737       }
;;;1738       return (len);
000080  4608              MOV      r0,r1
;;;1739   }
000082  4770              BX       lr
;;;1740   #endif
                          ENDP

                  OSEventNameSet PROC
;;;183    void  OSEventNameSet (OS_EVENT *pevent, INT8U *pname, INT8U *perr)
;;;184    {
000084  e92de92d          PUSH     {r4-r8,lr}
000088  4605              MOV      r5,r0
00008a  460e              MOV      r6,r1
00008c  4614              MOV      r4,r2
;;;185        INT8U      len;
;;;186    #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
;;;187        OS_CPU_SR  cpu_sr = 0;
;;;188    #endif
;;;189    
;;;190    
;;;191    
;;;192    #if OS_ARG_CHK_EN > 0
;;;193        if (perr == (INT8U *)0) {                    /* Validate 'perr'                                    */
;;;194            return;
;;;195        }
;;;196        if (pevent == (OS_EVENT *)0) {               /* Is 'pevent' a NULL pointer?                        */
;;;197            *perr = OS_ERR_PEVENT_NULL;
;;;198            return;
;;;199        }
;;;200        if (pname == (INT8U *)0) {                   /* Is 'pname' a NULL pointer?                         */
;;;201            *perr = OS_ERR_PNAME_NULL;
;;;202            return;
;;;203        }
;;;204    #endif
;;;205        if (OSIntNesting > 0) {                      /* See if trying to call from an ISR                  */
00008e  48e5              LDR      r0,|L1.1060|
000090  7880              LDRB     r0,[r0,#2]  ; OSIntNesting
000092  b110              CBZ      r0,|L1.154|
;;;206            *perr = OS_ERR_NAME_SET_ISR;
000094  2012              MOVS     r0,#0x12
000096  7020              STRB     r0,[r4,#0]
;;;207            return;
;;;208        }
;;;209        switch (pevent->OSEventType) {
;;;210            case OS_EVENT_TYPE_SEM:
;;;211            case OS_EVENT_TYPE_MUTEX:
;;;212            case OS_EVENT_TYPE_MBOX:
;;;213            case OS_EVENT_TYPE_Q:
;;;214                 break;
;;;215    
;;;216            default:
;;;217                 *perr = OS_ERR_EVENT_TYPE;
;;;218                 return;
;;;219        }
;;;220        OS_ENTER_CRITICAL();
;;;221        len = OS_StrLen(pname);                           /* Can we fit the string in the storage area?    */
;;;222        if (len > (OS_EVENT_NAME_SIZE - 1)) {             /* No                                            */
;;;223            OS_EXIT_CRITICAL();
;;;224            *perr = OS_ERR_EVENT_NAME_TOO_LONG;
;;;225            return;
;;;226        }
;;;227        (void)OS_StrCopy(pevent->OSEventName, pname);     /* Yes, copy name to the event control block     */
;;;228        OS_EXIT_CRITICAL();
;;;229        *perr = OS_ERR_NONE;
;;;230    }
000098  e7cb              B        |L1.50|
                  |L1.154|
00009a  7828              LDRB     r0,[r5,#0]            ;209
00009c  2801              CMP      r0,#1                 ;209
00009e  d005              BEQ      |L1.172|
0000a0  2802              CMP      r0,#2                 ;209
0000a2  d003              BEQ      |L1.172|
0000a4  2803              CMP      r0,#3                 ;209
0000a6  d001              BEQ      |L1.172|
0000a8  2804              CMP      r0,#4                 ;209
0000aa  d10d              BNE      |L1.200|
                  |L1.172|
0000ac  f7fff7ff          BL       OS_CPU_SR_Save
0000b0  4607              MOV      r7,r0                 ;220
0000b2  4630              MOV      r0,r6                 ;221
0000b4  f7fff7ff          BL       OS_StrLen
0000b8  280f              CMP      r0,#0xf               ;222
0000ba  d908              BLS      |L1.206|
0000bc  4638              MOV      r0,r7                 ;223
0000be  f7fff7ff          BL       OS_CPU_SR_Restore
0000c2  200b              MOVS     r0,#0xb               ;224
0000c4  7020              STRB     r0,[r4,#0]            ;224
0000c6  e7b4              B        |L1.50|
                  |L1.200|
0000c8  2001              MOVS     r0,#1                 ;217
0000ca  7020              STRB     r0,[r4,#0]            ;217
0000cc  e7b1              B        |L1.50|
                  |L1.206|
0000ce  4631              MOV      r1,r6                 ;227
0000d0  f105f105          ADD      r0,r5,#0xf            ;227
0000d4  f7fff7ff          BL       OS_StrCopy
0000d8  4638              MOV      r0,r7                 ;228
0000da  f7fff7ff          BL       OS_CPU_SR_Restore
0000de  2000              MOVS     r0,#0                 ;229
0000e0  7020              STRB     r0,[r4,#0]            ;229
0000e2  e7a6              B        |L1.50|
;;;231    #endif
                          ENDP

                  OS_EventTaskRemoveMulti PROC
;;;1165                                  OS_EVENT **pevents_multi)
;;;1166   {
0000e4  b570              PUSH     {r4-r6,lr}
;;;1167       OS_EVENT **pevents;
;;;1168       OS_EVENT  *pevent;
;;;1169       INT8U      y;
;;;1170   #if (OS_LOWEST_PRIO <= 63)
;;;1171       INT8U      bity;
;;;1172       INT8U      bitx;
;;;1173   #else
;;;1174       INT16U     bity;
;;;1175       INT16U     bitx;
;;;1176   #endif
;;;1177   
;;;1178   
;;;1179       y       =  ptcb->OSTCBY;
0000e6  f810f810          LDRB     r4,[r0,#0x34]!
;;;1180       bity    =  ptcb->OSTCBBitY;
0000ea  7885              LDRB     r5,[r0,#2]
;;;1181       bitx    =  ptcb->OSTCBBitX;
0000ec  7846              LDRB     r6,[r0,#1]
;;;1182       pevents =  pevents_multi;

⌨️ 快捷键说明

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