亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? artx_config.lst

?? 嵌入式例程系列1
?? LST
?? 第 1 頁 / 共 4 頁
字號:
  317   1      } /* end of os_tmr_force_irq */
  318          
  319          /*--------------------------- os_tmr_inspect_cnt ----------------------------*/
  320          
  321          U32 os_tmr_inspect_cnt (void) {
  322   1         /* Inspect current value of rtx timer.                                    */
ARM COMPILER V2.50a,  ARTX_Config                                                          05/04/06  21:09:48  PAGE 6   

  323   1         return (OS_TVAL);
  324   1      } /* end of os_tmr_inspect_cnt */
  325          
  326          /*--------------------------- os_tmr_inspect_ovf ----------------------------*/
  327          
  328          BOOL os_tmr_inspect_ovf (void) {
  329   1         /* Inspect current state of timer overflow flag.                          */
  330   1         return (OS_TOVF);
  331   1      } /* end of os_tmr_inspect_ovf */
  332          
  333          /*--------------------------- tsk_lock --------------------------------------*/
  334          
  335          void tsk_lock (void) {
  336   1         /* Lock out tasks: prevents task switching by locking out scheduler       */
  337   1         /* activation on interrupt.                                            .  */
  338   1         OS_LOCK();
  339   1      } /* end of tsk_lock */
  340          
  341          /*--------------------------- tsk_unlock ------------------------------------*/
  342          
  343          void tsk_unlock (void) {
  344   1         /* Enable AR System Tick Timer Interrupts.                                */
  345   1         OS_UNLOCK();
  346   1      } /* end of tsk_unlock */
  347          
  348          /*--------------------------- os_init_mem -----------------------------------*/
  349          
  350          void os_init_mem (void) {
  351   1         U32 i;
  352   1      
  353   1         for (i = 0; i < OS_TASKCNT; i++) {
  354   2            os_active_TCB[i] = NULL;
  355   2         }
  356   1         _init_box (&m_tcb, sizeof(m_tcb), sizeof(struct OS_TCB));
  357   1         _init_box (&m_stk, sizeof(m_stk), OS_STKSIZE*4);
  358   1      #if (OS_TIMERCNT != 0)
                  _init_box (&m_tmr, sizeof(m_tmr), sizeof(struct OS_TMR));
               #endif
  361   1      } /* end of os_init_mem */
  362          
  363          /*--------------------------- os_alloc_TCB ----------------------------------*/
  364          
  365          P_TCB os_alloc_TCB () {
  366   1         return (_alloc_box (m_tcb));
  367   1      } /* end of os_alloc_TCB */
  368          
  369          /*--------------------------- os_free_TCB -----------------------------------*/
  370          
  371          void os_free_TCB (P_TCB p_TCB) {
  372   1         /* Free allocated memory resources for the task "p_TCB" */
  373   1         _free_box (m_stk, p_TCB->stack);
  374   1         _free_box (m_tcb, p_TCB);
  375   1      #if (OS_STKCHECK == 1)
  376   1         if (os_runtask == p_TCB) {
  377   2            /* os_tsk_delete_self() called. */
  378   2            os_del_flag = __TRUE;
  379   2         }
  380   1      #endif
  381   1      } /* end of os_free_TCB */
  382          
  383          /*--------------------------- os_alloc_TMR ----------------------------------*/
  384          
  385          P_TMR os_alloc_TMR () {
  386   1      #if (OS_TIMERCNT != 0)
                  return (_alloc_box (m_tmr));
               #else
ARM COMPILER V2.50a,  ARTX_Config                                                          05/04/06  21:09:48  PAGE 7   

  389   1         return (NULL);
  390   1      #endif
  391   1      } /* end of os_alloc_TMR */
  392          
  393          /*--------------------------- os_free_TMR -----------------------------------*/
  394          
  395          void os_free_TMR (P_TMR timer) {
  396   1         /* Free allocated memory resources for user timer 'timer' */
  397   1      #if (OS_TIMERCNT != 0)
                  _free_box (m_tmr, timer);
               #else
  400   1         timer = timer;
  401   1      #endif
  402   1      } /* end of os_free_TMR */
  403          
  404          /*--------------------------- os_init_context -------------------------------*/
  405          
  406          void os_init_context (P_TCB p_TCB, U8 priority,
  407                                FUNCP task_body, U8 full_context) {
  408   1         /* Prepare TCB and saved context for a first time start of a task         */
  409   1         /* "p_TCB" points to TCB to be initialised. "priority" indicates desired  */
  410   1         /* execution priority. "task_body" is the start address of the task.      */
  411   1         /* "full_context" identifies context type.                                */
  412   1         U32 *stk,i;
  413   1      
  414   1         /* Initialize general part of TCB */
  415   1         p_TCB->cb_type = TCB;
  416   1         p_TCB->state   = READY;
  417   1         p_TCB->prio    = priority;
  418   1         p_TCB->p_lnk   = NULL;
  419   1         p_TCB->p_rlnk  = NULL;
  420   1         p_TCB->p_dlnk  = NULL;
  421   1         p_TCB->p_blnk  = NULL;
  422   1         p_TCB->delta_time    = 0;
  423   1         p_TCB->interval_time = 0;
  424   1         p_TCB->events  = 0;
  425   1         p_TCB->waits   = 0;
  426   1      
  427   1         /* Initialize ARM specific part of TCB */
  428   1         p_TCB->full_ctx = full_context;
  429   1      
  430   1         /* Prepare a complete interrupt frame for first task start */
  431   1         if (p_TCB->priv_stack != 0) {
  432   2            /* User has provided a memory space for the stack. */
  433   2            stk = &p_TCB->stack[p_TCB->priv_stack>>2];
  434   2         }
  435   1         else {
  436   2            /* Allocate the memory space for the stack. */
  437   2            p_TCB->stack = _alloc_box (m_stk);
  438   2            /* Write to the top of stack. */
  439   2            stk = &p_TCB->stack[OS_STKSIZE];
  440   2         }
  441   1      
  442   1         /* Initial PC and default CPSR */
  443   1         *--stk = (U32)task_body;
  444   1         i      = INITIAL_CPSR;
  445   1      
  446   1         /* If a task in THUMB mode, set T-bit. */
  447   1         if ((U32)task_body & 1) {
  448   2            i |= 0x00000020;
  449   2         }
  450   1         *--stk = i;
  451   1      
  452   1         /* Write initial registers. */
  453   1         for (i = full_context ? 13 : 4; i; i--) {
  454   2            *--stk = 0;
ARM COMPILER V2.50a,  ARTX_Config                                                          05/04/06  21:09:48  PAGE 8   

  455   2         }
  456   1      
  457   1         /* For "full_context" assign a void pointer to R0. */
  458   1         if (full_context) {
  459   2            *--stk = (U32)p_TCB->p_msg;
  460   2         }
  461   1      
  462   1         /* Initial Task stack pointer. */
  463   1         p_TCB->tsk_stack = (U32)stk;
  464   1      
  465   1         /* Task entry point. */
  466   1         p_TCB->ptask = task_body;
  467   1      #if (OS_STKCHECK == 1)
  468   1         /* Set a magic word for checking of stack overflow. */
  469   1         p_TCB->stack[0] = MAGIC_WORD;
  470   1      #endif
  471   1      } /* end of os_init_context */
  472          
  473          
  474          /*--------------------------- os_set_env ------------------------------------*/
  475          
  476          void os_set_env (P_TCB p_TCB) {
  477   1         /* Fix up runtime environment to fit idle task. It is called after the  */
  478   1         /* idle task TCB initialization. "p_TCB" identifies the TCB to be used. */
  479   1         p_TCB = p_TCB;
  480   1         __asm {
  481   1              LDR     R0,[R0,#TCB_TSTACK]         ; p_TCB in R0
  482   1              MOV     SP,R0
  483   1              ADD     SP,SP,#24                   ; ignore default context
  484   1         }
  485   1      } /* end of os_set_env */
  486          
  487          
  488          /*--------------------------- os_switch_tasks -------------------------------*/
  489          
  490          void os_switch_tasks (P_TCB p_new) __swi (0) {
  491   1         /* Switch to next task (identified by "p_new"). Saving old and restoring */
  492   1         /* new context is written in assembly (module: Swi_ARTX.s)               */
  493   1      
  494   1      #if (OS_STKCHECK == 1)
  495   1         if (tstclrb (&os_del_flag) == __FALSE) {
  496   2            /* Do not check if task has deleted itself. */
  497   2            if ((os_runtask->tsk_stack < (U32)os_runtask->stack) || 
  498   2                (os_runtask->stack[0] != MAGIC_WORD )) {
  499   3               os_stk_overflow ();
  500   3            }
  501   2         }
  502   1      #endif
  503   1         os_runtask->full_ctx = __FALSE;
  504   1         os_runtask = p_new;
  505   1         p_new->state = RUNNING;
  506   1      #if (OS_ROBIN == 1)
  507   1         if (p_new->full_ctx == __TRUE) {
  508   2            os_tsk_robin = p_new;
  509   2         }
  510   1      #endif
  511   1         /* Tsk_Unlock */
  512   1         OS_UNLOCK();
  513   1      } /* end of os_switch_tasks */
  514          
  515          
  516          /*--------------------------- os_chk_robin ----------------------------------*/
  517          
  518          void os_chk_robin (void) {
  519   1         /* Check if Round Robin timeout expired and switch to the next ready task.*/
  520   1         /* This function is called from the "os_clock_demon()" task scheduler.    */
ARM COMPILER V2.50a,  ARTX_Config                                                          05/04/06  21:09:48  PAGE 9   

  521   1      #if (OS_ROBIN == 1)
  522   1         P_TCB p_new;
  523   1      
  524   1         if (os_rdy.p_lnk != os_tsk_robin) {
  525   2            os_robin_time = os_time + OS_ROBINTOUT;
  526   2            return;
  527   2            }
  528   1         if (os_robin_time == os_time) {
  529   2            /* Round Robin timeout has expired. */
  530   2            os_robin_time += OS_ROBINTOUT;
  531   2            p_new = os_get_first (&os_rdy);
  532   2            os_put_prio ((P_XCB)&os_rdy, p_new);
  533   2            }
  534   1      #endif
  535   1      } /* end of os_chk_robin */
  536          
  537          /*----------------------------------------------------------------------------
  538           * end of file
  539           *---------------------------------------------------------------------------*/
  540          
ARM COMPILER V2.50a,  ARTX_Config                                                          05/04/06  21:09:48  PAGE 10  

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** EXTERNALS:
 EXTERN CODE16 (os_put_rdy_first?T)
 EXTERN CODE16 (os_put_prio?T)
 EXTERN CODE16 (os_get_first?T)
 EXTERN CODE32 (tstclrb?A)
 EXTERN CODE16 (os_get_TID?T)
 EXTERN CODE16 (_init_box?T)
 EXTERN CODE16 (_alloc_box?T)
 EXTERN CODE16 (_free_box?T)
 EXTERN DATA (os_runtask)
 EXTERN DATA (os_rdy)
 EXTERN DATA (os_clock_TCB)
 EXTERN DATA (os_time)
 EXTERN CODE32 (os_put_rdy_first?A)
 EXTERN CODE16 (tstclrb?T)



*** PUBLICS:
 PUBLIC         os_init_context?T
 PUBLIC         os_init_context?A
 PUBLIC         os_init_mem?T
 PUBLIC         os_init_mem?A
 PUBLIC         os_alloc_TCB?T
 PUBLIC         os_alloc_TCB?A
 PUBLIC         os_free_TCB?T
 PUBLIC         os_free_TCB?A
 PUBLIC         os_set_env?T
 PUBLIC         os_set_env?A
 PUBLIC         os_switch_tasks?T
 PUBLIC         os_switch_tasks?A
 PUBLIC         tsk_lock?T
 PUBLIC         tsk_lock?A
 PUBLIC         tsk_unlock?T
 PUBLIC         tsk_unlock?A
 PUBLIC         os_tmr_call?T
 PUBLIC         os_tmr_call?A
 PUBLIC         os_alloc_TMR?T
 PUBLIC         os_alloc_TMR?A
 PUBLIC         os_free_TMR?T
 PUBLIC         os_free_TMR?A
 PUBLIC         os_idle_demon?T
 PUBLIC         os_idle_demon?A
 PUBLIC         os_tmr_init?T
 PUBLIC         os_tmr_init?A
 PUBLIC         os_tmr_reload?T
 PUBLIC         os_tmr_reload?A
 PUBLIC         os_tmr_force_irq?T
 PUBLIC         os_tmr_force_irq?A
 PUBLIC         os_tmr_inspect_cnt?T
 PUBLIC         os_tmr_inspect_cnt?A
 PUBLIC         os_tmr_inspect_ovf?T
 PUBLIC         os_tmr_inspect_ovf?A
 PUBLIC         os_chk_robin?T
 PUBLIC         os_chk_robin?A
 PUBLIC         os_clock_interrupt?A
 PUBLIC         os_clock_interrupt?T
 PUBLIC         os_def_interrupt?A
 PUBLIC         os_def_interrupt?T
 PUBLIC         os_maxtaskrun
 PUBLIC         os_stackinfo
 PUBLIC         os_clockrate
 PUBLIC         os_timernum
 PUBLIC         os_rrobin
 PUBLIC         os_active_TCB
ARM COMPILER V2.50a,  ARTX_Config                                                          05/04/06  21:09:48  PAGE 11  




*** DATA SEGMENT '?CON?ARTX_Config':
 00000000          os_stackinfo:
 00000000           BEGIN_INIT
 00000000  010000C8  DD          0x10000C8
 00000004           END_INIT
 00000004          os_clockrate:
 00000004           BEGIN_INIT
 00000004  00002710  DD          0x2710
 00000008           END_INIT
 00000008          os_timernum:
 00000008           BEGIN_INIT
 00000008  00010000  DD          0x10000
 0000000C           END_INIT
 0000000C          os_rrobin:
 0000000C           BEGIN_INIT
 0000000C  00010005  DD          0x10005
 00000010           END_INIT
 00000010          os_maxtaskrun:
 00000010           BEGIN_INIT
 00000010  0006      DW          0x6
 00000012           END_INIT

*** DATA SEGMENT '?DT0?ARTX_Config':
 00000000          m_tcb:
 00000000            DS          300
 0000012C          m_stk:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合av免费| 香蕉久久夜色精品国产使用方法 | 欧美日韩久久不卡| 精品国产污污免费网站入口| 中文字幕精品综合| 亚洲国产精品视频| 韩国在线一区二区| 91成人免费网站| 精品久久人人做人人爱| 亚洲色图欧洲色图婷婷| 日日夜夜免费精品视频| 丁香激情综合国产| 成人亚洲一区二区一| 久久精品免费观看| 99久久精品国产精品久久| 久久久久久久久久久久久女国产乱| 夜夜爽夜夜爽精品视频| 97精品久久久午夜一区二区三区| 久久久亚洲午夜电影| 精品一区精品二区高清| 欧美日本国产一区| 亚洲mv在线观看| 欧美日韩卡一卡二| 性做久久久久久| 欧美美女一区二区三区| 亚洲最大成人综合| 色视频成人在线观看免| 国产精品久久久久久妇女6080| 国产精品一区在线观看你懂的| 日韩精品一区二区三区在线观看| 天堂精品中文字幕在线| 在线播放国产精品二区一二区四区| 亚洲激情一二三区| 欧美色欧美亚洲另类二区| 亚洲曰韩产成在线| 欧美精品久久久久久久多人混战 | 97se亚洲国产综合自在线观| 亚洲国产精品99久久久久久久久 | 久久激情综合网| 日韩一区二区三区电影| 久久不见久久见免费视频7| 337p日本欧洲亚洲大胆色噜噜| 国产一区二区毛片| 中文在线一区二区| 日本乱人伦一区| 亚洲成国产人片在线观看| 6080日韩午夜伦伦午夜伦| 蜜臀av一区二区在线免费观看| 日韩精品一区二区三区视频| 国产主播一区二区| 一区在线中文字幕| 欧美视频第二页| 久久av中文字幕片| 日本一区二区三区久久久久久久久不 | 在线观看欧美精品| 麻豆精品在线播放| 国产精品无人区| 在线亚洲+欧美+日本专区| 日韩va亚洲va欧美va久久| 久久蜜臀精品av| 欧美在线观看一区二区| 麻豆久久一区二区| 欧美国产日韩a欧美在线观看| 91网站最新地址| 肉肉av福利一精品导航| 国产蜜臀97一区二区三区 | 亚洲综合成人在线| 欧美大片免费久久精品三p| 99精品欧美一区二区三区综合在线| 亚洲亚洲人成综合网络| 久久久久久一二三区| 色一情一伦一子一伦一区| 亚洲国产精品成人综合色在线婷婷 | 国产福利91精品一区二区三区| 欧美激情综合网| 欧美精品乱码久久久久久 | 欧美日韩一区在线| 国产在线麻豆精品观看| 一级中文字幕一区二区| 久久久久久久久97黄色工厂| 欧美群妇大交群的观看方式| 成人av电影在线网| 捆绑变态av一区二区三区| 亚洲乱码日产精品bd| 精品国产91久久久久久久妲己| 欧美午夜精品一区二区蜜桃| 国产成人一级电影| 蜜桃在线一区二区三区| 夜夜嗨av一区二区三区| 亚洲国产精华液网站w| 日韩美女视频一区二区在线观看| 一本色道a无线码一区v| 国产69精品一区二区亚洲孕妇| 免费日本视频一区| 亚洲线精品一区二区三区| 国产精品国产自产拍在线| 久久久蜜桃精品| 精品国产青草久久久久福利| 欧美三区在线视频| 欧美性三三影院| 欧美亚州韩日在线看免费版国语版| 国产成人av网站| 国产成人综合网站| 国产精品资源网| 精品亚洲aⅴ乱码一区二区三区| 视频一区视频二区中文| 亚洲成人动漫一区| 亚瑟在线精品视频| 秋霞午夜av一区二区三区| 日韩黄色免费网站| 日韩极品在线观看| 五月婷婷另类国产| 日韩中文欧美在线| 日韩va欧美va亚洲va久久| 五月综合激情婷婷六月色窝| 午夜视频在线观看一区二区 | 久久福利视频一区二区| 欧美aaaaa成人免费观看视频| 五月综合激情婷婷六月色窝| 亚洲成a人片在线不卡一二三区| 一区二区高清在线| 午夜一区二区三区视频| 亚洲高清久久久| 毛片不卡一区二区| 国产一区欧美二区| 国产精品1区2区| 成人免费黄色大片| 色老汉一区二区三区| 欧美日韩国产区一| 26uuu国产日韩综合| 国产欧美一区二区精品忘忧草| 国产精品私人影院| 亚洲女人的天堂| 亚洲一区二区三区不卡国产欧美| 午夜a成v人精品| 国产一区二区三区在线观看精品| 国产福利精品一区二区| av电影在线观看完整版一区二区| 91福利在线导航| 欧美一级艳片视频免费观看| 精品不卡在线视频| 国产精品视频免费看| 亚洲精选在线视频| 六月婷婷色综合| 成人av一区二区三区| 欧美视频在线观看一区二区| 日韩欧美成人午夜| 中文字幕在线一区二区三区| 一区二区三区在线观看国产| 另类小说欧美激情| 99精品久久只有精品| 3atv在线一区二区三区| 国产欧美日韩另类一区| 亚洲大片免费看| 成人一道本在线| 日韩亚洲欧美成人一区| 国产精品乱人伦| 日本视频中文字幕一区二区三区| av动漫一区二区| 精品美女在线观看| 亚洲成人你懂的| 成人不卡免费av| 欧美成人精品3d动漫h| 亚洲人成精品久久久久久| 精品系列免费在线观看| 色婷婷综合激情| 国产精品午夜在线| 国产综合久久久久久久久久久久| 欧美综合一区二区三区| 亚洲国产精品精华液ab| 蜜桃视频免费观看一区| 欧美性感一区二区三区| 国产精品视频你懂的| 国产一区二区在线观看视频| 欧美日韩国产系列| 一区二区三区免费在线观看| 国产精品一二三区在线| 欧美电影免费观看高清完整版在| 一区2区3区在线看| 一本色道亚洲精品aⅴ| 久久久一区二区| 国模一区二区三区白浆| 4438x成人网最大色成网站| 亚洲国产精品精华液网站| 91在线高清观看| 国产精品麻豆视频| 成人高清视频免费观看| 国产亚洲一区二区三区| 国内外成人在线| www亚洲一区| 精品一区二区三区的国产在线播放 | 欧美最猛性xxxxx直播| 中文字幕亚洲精品在线观看| 国产乱人伦精品一区二区在线观看 | 欧美在线短视频| 一级精品视频在线观看宜春院| 91亚洲资源网| 亚洲乱码中文字幕| 欧洲一区在线电影| 夜夜嗨av一区二区三区网页|