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

📄 os_core.txt

📁 stm32 ucos 精简移殖版本 不需作任何修改直接便可运行。包含串口 定时器
💻 TXT
📖 第 1 页 / 共 5 页
字号:
;;;1473                          OS_TASK_STAT_PRIO);                             /* One higher than the idle task  */
;;;1474       #endif
;;;1475   #endif
;;;1476   
;;;1477   #if OS_TASK_NAME_SIZE > 14
;;;1478       OSTaskNameSet(OS_TASK_STAT_PRIO, (INT8U *)"uC/OS-II Stat", &err);
000420  aa06              ADD      r2,sp,#0x18
000422  e007              B        |L1.1076|
                  |L1.1060|
000424  00000000          DCD      ||.data||
                  |L1.1064|
000428  00000000          DCD      ||.constdata||
                  |L1.1068|
00042c  00000540          DCD      ||.bss||+0x540
                  |L1.1072|
000430  00000140          DCD      ||.bss||+0x140
                  |L1.1076|
000434  a1fe              ADR      r1,|L1.2096|
000436  201e              MOVS     r0,#0x1e
000438  f7fff7ff          BL       OSTaskNameSet
                  |L1.1084|
;;;1479   #else
;;;1480   #if OS_TASK_NAME_SIZE > 7
;;;1481       OSTaskNameSet(OS_TASK_STAT_PRIO, (INT8U *)"OS-Stat", &err);
;;;1482   #endif
;;;1483   #endif
;;;1484   }
00043c  b007              ADD      sp,sp,#0x1c
00043e  bd00              POP      {pc}
;;;1485   #endif
                          ENDP

                  OS_TaskIdle PROC
;;;1763   void  OS_TaskIdle (void *p_arg)
;;;1764   {
000440  b510              PUSH     {r4,lr}
000442  4cff              LDR      r4,|L1.2112|
                  |L1.1092|
;;;1765   #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
;;;1766       OS_CPU_SR  cpu_sr = 0;
;;;1767   #endif
;;;1768   
;;;1769   
;;;1770   
;;;1771       (void)p_arg;                                 /* Prevent compiler warning for not using 'p_arg'     */
;;;1772       for (;;) {
;;;1773           OS_ENTER_CRITICAL();
000444  f7fff7ff          BL       OS_CPU_SR_Save
;;;1774           OSIdleCtr++;
000448  6a21              LDR      r1,[r4,#0x20]  ; OSIdleCtr
00044a  1c49              ADDS     r1,r1,#1
00044c  6221              STR      r1,[r4,#0x20]  ; OSIdleCtr
;;;1775           OS_EXIT_CRITICAL();
00044e  f7fff7ff          BL       OS_CPU_SR_Restore
;;;1776           OSTaskIdleHook();                        /* Call user definable HOOK                           */
000452  f7fff7ff          BL       OSTaskIdleHook
000456  e7f5              B        |L1.1092|
;;;1777       }
;;;1778   }
;;;1779   /*$PAGE*/
                          ENDP

                  OS_InitTaskIdle PROC
;;;1368   static  void  OS_InitTaskIdle (void)
;;;1369   {
000458  b500              PUSH     {lr}
00045a  b087              SUB      sp,sp,#0x1c
;;;1370   #if OS_TASK_NAME_SIZE > 7
;;;1371       INT8U  err;
;;;1372   #endif
;;;1373   
;;;1374   
;;;1375   #if OS_TASK_CREATE_EXT_EN > 0
;;;1376       #if OS_STK_GROWTH == 1
;;;1377       (void)OSTaskCreateExt(OS_TaskIdle,
00045c  2303              MOVS     r3,#3
00045e  2200              MOVS     r2,#0
000460  e9cde9cd          STRD     r2,r3,[sp,#0xc]
000464  48f7              LDR      r0,|L1.2116|
000466  2180              MOVS     r1,#0x80
000468  e9cde9cd          STRD     r0,r1,[sp,#4]
00046c  f64ff64f          MOV      r3,#0xffff
000470  9300              STR      r3,[sp,#0]
000472  231f              MOVS     r3,#0x1f
000474  f500f500          ADD      r2,r0,#0x1fc
000478  2100              MOVS     r1,#0
00047a  f2aff2af          ADR      r0,OS_TaskIdle + 1
00047e  f7fff7ff          BL       OSTaskCreateExt
;;;1378                             (void *)0,                                 /* No arguments passed to OS_TaskIdle() */
;;;1379                             &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1], /* Set Top-Of-Stack                     */
;;;1380                             OS_TASK_IDLE_PRIO,                         /* Lowest priority level                */
;;;1381                             OS_TASK_IDLE_ID,
;;;1382                             &OSTaskIdleStk[0],                         /* Set Bottom-Of-Stack                  */
;;;1383                             OS_TASK_IDLE_STK_SIZE,
;;;1384                             (void *)0,                                 /* No TCB extension                     */
;;;1385                             OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);/* Enable stack checking + clear stack  */
;;;1386       #else
;;;1387       (void)OSTaskCreateExt(OS_TaskIdle,
;;;1388                             (void *)0,                                 /* No arguments passed to OS_TaskIdle() */
;;;1389                             &OSTaskIdleStk[0],                         /* Set Top-Of-Stack                     */
;;;1390                             OS_TASK_IDLE_PRIO,                         /* Lowest priority level                */
;;;1391                             OS_TASK_IDLE_ID,
;;;1392                             &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1], /* Set Bottom-Of-Stack                  */
;;;1393                             OS_TASK_IDLE_STK_SIZE,
;;;1394                             (void *)0,                                 /* No TCB extension                     */
;;;1395                             OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);/* Enable stack checking + clear stack  */
;;;1396       #endif
;;;1397   #else
;;;1398       #if OS_STK_GROWTH == 1
;;;1399       (void)OSTaskCreate(OS_TaskIdle,
;;;1400                          (void *)0,
;;;1401                          &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1],
;;;1402                          OS_TASK_IDLE_PRIO);
;;;1403       #else
;;;1404       (void)OSTaskCreate(OS_TaskIdle,
;;;1405                          (void *)0,
;;;1406                          &OSTaskIdleStk[0],
;;;1407                          OS_TASK_IDLE_PRIO);
;;;1408       #endif
;;;1409   #endif
;;;1410   
;;;1411   #if OS_TASK_NAME_SIZE > 14
;;;1412       OSTaskNameSet(OS_TASK_IDLE_PRIO, (INT8U *)"uC/OS-II Idle", &err);
000482  aa06              ADD      r2,sp,#0x18
000484  a1f0              ADR      r1,|L1.2120|
000486  201f              MOVS     r0,#0x1f
000488  f7fff7ff          BL       OSTaskNameSet
;;;1413   #else
;;;1414   #if OS_TASK_NAME_SIZE > 7
;;;1415       OSTaskNameSet(OS_TASK_IDLE_PRIO, (INT8U *)"OS-Idle", &err);
;;;1416   #endif
;;;1417   #endif
;;;1418   }
00048c  e7d6              B        |L1.1084|
;;;1419   /*$PAGE*/
                          ENDP

                  OS_MemClr PROC
;;;1549   void  OS_MemClr (INT8U *pdest, INT16U size)
;;;1550   {
00048e  2200              MOVS     r2,#0
000490  e003              B        |L1.1178|
                  |L1.1170|
;;;1551       while (size > 0) {
;;;1552           *pdest++ = (INT8U)0;
000492  f800f800          STRB     r2,[r0],#1
;;;1553           size--;
000496  1e49              SUBS     r1,r1,#1
000498  b289              UXTH     r1,r1
                  |L1.1178|
00049a  2900              CMP      r1,#0                 ;1551
00049c  d1f9              BNE      |L1.1170|
;;;1554       }
;;;1555   }
00049e  4770              BX       lr
;;;1556   /*$PAGE*/
                          ENDP

                  OS_InitEventList PROC
;;;1241   static  void  OS_InitEventList (void)
;;;1242   {
0004a0  b510              PUSH     {r4,lr}
;;;1243   #if (OS_EVENT_EN) && (OS_MAX_EVENTS > 0)
;;;1244   #if (OS_MAX_EVENTS > 1)
;;;1245       INT16U     i;
;;;1246       OS_EVENT  *pevent1;
;;;1247       OS_EVENT  *pevent2;
;;;1248   
;;;1249   
;;;1250       OS_MemClr((INT8U *)&OSEventTbl[0], sizeof(OSEventTbl)); /* Clear the event table                   */
0004a2  f44ff44f          MOV      r1,#0x140
0004a6  48ec              LDR      r0,|L1.2136|
0004a8  f7fff7ff          BL       OS_MemClr
;;;1251       pevent1 = &OSEventTbl[0];
0004ac  48ea              LDR      r0,|L1.2136|
;;;1252       pevent2 = &OSEventTbl[1];
0004ae  f100f100          ADD      r2,r0,#0x20
;;;1253       for (i = 0; i < (OS_MAX_EVENTS - 1); i++) {             /* Init. list of free EVENT control blocks */
0004b2  2100              MOVS     r1,#0
0004b4  2300              MOVS     r3,#0
0004b6  243f              MOVS     r4,#0x3f
                  |L1.1208|
;;;1254           pevent1->OSEventType    = OS_EVENT_TYPE_UNUSED;
0004b8  7003              STRB     r3,[r0,#0]
;;;1255           pevent1->OSEventPtr     = pevent2;
0004ba  6042              STR      r2,[r0,#4]
;;;1256   #if OS_EVENT_NAME_SIZE > 1
;;;1257           pevent1->OSEventName[0] = '?';                      /* Unknown name                            */
0004bc  73c4              STRB     r4,[r0,#0xf]
;;;1258           pevent1->OSEventName[1] = OS_ASCII_NUL;
0004be  7403              STRB     r3,[r0,#0x10]
;;;1259   #endif
;;;1260           pevent1++;
0004c0  3020              ADDS     r0,r0,#0x20
;;;1261           pevent2++;
0004c2  3220              ADDS     r2,r2,#0x20
0004c4  1c49              ADDS     r1,r1,#1              ;1253
0004c6  b289              UXTH     r1,r1                 ;1253
0004c8  2909              CMP      r1,#9                 ;1253
0004ca  d3f5              BCC      |L1.1208|
;;;1262       }
;;;1263       pevent1->OSEventType            = OS_EVENT_TYPE_UNUSED;
0004cc  7003              STRB     r3,[r0,#0]
;;;1264       pevent1->OSEventPtr             = (OS_EVENT *)0;
0004ce  6043              STR      r3,[r0,#4]
;;;1265   #if OS_EVENT_NAME_SIZE > 1
;;;1266       pevent1->OSEventName[0]         = '?';
0004d0  73c4              STRB     r4,[r0,#0xf]
;;;1267       pevent1->OSEventName[1]         = OS_ASCII_NUL;
0004d2  7403              STRB     r3,[r0,#0x10]
;;;1268   #endif
;;;1269       OSEventFreeList                 = &OSEventTbl[0];
0004d4  49da              LDR      r1,|L1.2112|
0004d6  48e0              LDR      r0,|L1.2136|
0004d8  6108              STR      r0,[r1,#0x10]  ; OSEventFreeList
;;;1270   #else
;;;1271       OSEventFreeList                 = &OSEventTbl[0];       /* Only have ONE event control block       */
;;;1272       OSEventFreeList->OSEventType    = OS_EVENT_TYPE_UNUSED;
;;;1273       OSEventFreeList->OSEventPtr     = (OS_EVENT *)0;
;;;1274   #if OS_EVENT_NAME_SIZE > 1
;;;1275       OSEventFreeList->OSEventName[0] = '?';                  /* Unknown name                            */
;;;1276       OSEventFreeList->OSEventName[1] = OS_ASCII_NUL;
;;;1277   #endif
;;;1278   #endif
;;;1279   #endif
;;;1280   }
0004da  bd10              POP      {r4,pc}
;;;1281   /*$PAGE*/
                          ENDP

                  OS_InitTCBList PROC
;;;1500   static  void  OS_InitTCBList (void)
;;;1501   {
0004dc  b510              PUSH     {r4,lr}
;;;1502       INT8U    i;
;;;1503       OS_TCB  *ptcb1;
;;;1504       OS_TCB  *ptcb2;
;;;1505   
;;;1506   
;;;1507       OS_MemClr((INT8U *)&OSTCBTbl[0],     sizeof(OSTCBTbl));      /* Clear all the TCBs                 */
0004de  f44ff44f          MOV      r1,#0x7e8
0004e2  48de              LDR      r0,|L1.2140|
0004e4  f7fff7ff          BL       OS_MemClr
;;;1508       OS_MemClr((INT8U *)&OSTCBPrioTbl[0], sizeof(OSTCBPrioTbl));  /* Clear the priority table           */
0004e8  48dc              LDR      r0,|L1.2140|
0004ea  2180              MOVS     r1,#0x80
0004ec  3880              SUBS     r0,r0,#0x80
0004ee  f7fff7ff          BL       OS_MemClr
;;;1509       ptcb1 = &OSTCBTbl[0];
0004f2  48da              LDR      r0,|L1.2140|
;;;1510       ptcb2 = &OSTCBTbl[1];
0004f4  f100f100          ADD      r2,r0,#0x5c
;;;1511       for (i = 0; i < (OS_MAX_TASKS + OS_N_SYS_TASKS - 1); i++) {  /* Init. list of free TCBs            */
0004f8  2100              MOVS     r1,#0
0004fa  2400              MOVS     r4,#0
0004fc  233f              MOVS     r3,#0x3f
                  |L1.1278|
;;;1512           ptcb1->OSTCBNext = ptcb2;
0004fe  6142              STR      r2,[r0,#0x14]
;;;1513   #if OS_TASK_NAME_SIZE > 1
;;;1514           ptcb1->OSTCBTaskName[0] = '?';                           /* Unknown name                       */
000500  f880f880          STRB     r3,[r0,#0x4c]
;;;1515           ptcb1->OSTCBTask

⌨️ 快捷键说明

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