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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? arm_00_os_taskswitch.lst

?? 是實(shí)時(shí)操作系統(tǒng)uc/os的原代碼,寫了頭文件
?? LST
字號(hào):
ARM COMPILER V2.50a,  ARM_00_OS_TaskSwitch                                                 28/08/06  09:18:53  PAGE 1   


ARM COMPILER V2.50a, COMPILATION OF MODULE ARM_00_OS_TaskSwitch
OBJECT MODULE PLACED IN ARM_00_OS_TaskSwitch.OBJ
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe ARM_00_OS_TaskSwitch.c ARM INTERWORK DEBUG TABS(4) 

stmt  level    source

    1          /**********************************************************************************************
    2          本程序只供學(xué)習(xí)使用,不得用于其它任何用途,否則后果自負(fù)。
    3          
    4            ARM_00_OS_TaskSwitch.c file
    5            
    6            注意:該文件必須設(shè)置為ARM模式。
    7            
    8            作者:Computer-lov
    9            建立日期:2006-5-1
   10            修改日期:2006-5-16
   11            最后修改時(shí)間:2006-08-25
   12            版本:V1.0
   13            版權(quán)所有,盜版必究。
   14            任何技術(shù)問題可到我的博客上留言:    http://computer00.21ic.org
   15            Copyright(C) Computer-lov 2006-2016
   16            All rights reserved
   17          **********************************************************************************************/
   18          
   19          #include "CPU.H"
   20          
   21          #include "My_type.h"
   22          #include "LED.H"
   23          #include "UART.H"
   24          #include "KEYS.H"
   25          #include "interrupt.h"
   26          #include "ARM_00_OS_Core.H"
   27          #include "ARM_00_OS_TaskSwitch.H"
   28          
   29          /**********************************************************************************************
   30          功能:禁止中斷。
   31          入口參數(shù)1:DisEnabledBit。即CPSR中對(duì)應(yīng)的I位和Q位。
   32                     頭文件中有定義,#define OS_I_Bit 0x80 #define OS_F_Bit 0x40
   33                     關(guān)IRQ中斷時(shí),使用OS_I_Bit,關(guān)FIQ中斷時(shí),使用OS_F_Bit。
   34                     兩個(gè)都關(guān)時(shí),將兩者按位或,即 OS_I_Bit | OS_F_Bit
   35          返回:無。
   36          使用資源:使用軟中斷號(hào)0。
   37          備注:使用了內(nèi)嵌的ARM指令,該函數(shù)所在的文件必須設(shè)置為ARM模式。
   38          **********************************************************************************************/
   39          void DisEnableInterrupt(uint32 DisEnableBit) __swi(0)
   40          {
   41   1       __asm LDMIA SP!,{R8}     //堆棧中保存的是SPSR寄存器(參看SWI_VEC.s文件),將其彈出至R8中。
   42   1       __asm ORR R8,R8,R0,LSL #0  //R8中的值,跟傳遞進(jìn)來的DisEnableBit(被放在R0中)相或。{}
   43   1       __asm STMDB SP!,{R8}        //將設(shè)置好的SPSR寄存器,壓回堆棧
   44   1      
   45   1       DisEnableBit=0;            //防止編譯器警告。請(qǐng)不要?jiǎng)h除該語句。如果刪除該語句,編譯器可能會(huì)刪除某些語句
   46   1                                  //從而導(dǎo)致程序運(yùn)行錯(cuò)誤
   47   1      }
   48          //////////////////////////////////End of function//////////////////////////////////////////////
   49          
   50          
   51          
   52          /**********************************************************************************************
   53          功能:使能中斷。
   54          入口參數(shù)1:EnabledBit。即CPSR中對(duì)應(yīng)的I位和Q位。
   55                     頭文件中有定義,#define OS_I_Bit 0x80 #define OS_F_Bit 0x40
   56                     關(guān)IRQ中斷時(shí),使用OS_I_Bit,關(guān)FIQ中斷時(shí),使用OS_F_Bit。
   57                     兩個(gè)都關(guān)時(shí),將兩者按位或,即 OS_I_Bit | OS_F_Bit
   58          返回:無。
   59          使用資源:使用軟中斷號(hào)1。
ARM COMPILER V2.50a,  ARM_00_OS_TaskSwitch                                                 28/08/06  09:18:53  PAGE 2   

   60          備注:使用了內(nèi)嵌的ARM指令,該函數(shù)所在的文件必須設(shè)置為ARM模式。
   61          **********************************************************************************************/
   62          void EnableInterrupt(uint32 EnableBit) __swi(1)
   63          {
   64   1       __asm LDMIA SP!,{R8}  //堆棧中保存的是SPSR寄存器(參看SWI_VEC.s文件),將其彈出至R8中
   65   1       __asm MVN R0,R0       //EnableBit(被放在R0中)取反{}
   66   1       __asm AND R8,R8,R0    //R8中的值,跟R0相與{} 
   67   1       __asm STMDB SP!,{R8}  //將設(shè)置好的SPSR寄存器,壓回堆棧
   68   1       
   69   1      
   70   1       EnableBit=0;            //防止編譯器警告。請(qǐng)不要?jiǎng)h除該語句
   71   1      
   72   1      }
   73          //////////////////////////////////End of function//////////////////////////////////////////////
   74          
   75          
   76          
   77          /**********************************************************************************************
   78          功能:?jiǎn)?dòng)操作系統(tǒng)。
   79          入口參數(shù)1:AddrOfSystemIdle。必須設(shè)置為系統(tǒng)空閑任務(wù)的入口地址。系統(tǒng)啟動(dòng)后,從系統(tǒng)空閑任務(wù)開始運(yùn)行。
   80          入口參數(shù)2:Mode。系統(tǒng)空閑任務(wù)代碼的模式。可以選擇ARM_MODE或者THUMB_MODE。
   81          返回:無。
   82          使用資源:使用軟中斷號(hào)2。
   83          備注:使用了內(nèi)嵌的ARM指令,該函數(shù)所在的文件必須設(shè)置為ARM模式。系統(tǒng)啟動(dòng)后,進(jìn)入系統(tǒng)空閑任務(wù)。
   84          **********************************************************************************************/
   85          void OSStart(uint32 AddrOfSystemIdle,uint32 Mode) __swi(2)
   86          {
   87   1       __asm ADD SP,SP,#20     //{}調(diào)整SP,使其指向返回地址的前一個(gè)字
   88   1       __asm STMDB SP,{R0}    //將入口地址壓入堆棧中的返回地址處
   89   1       
   90   1       __asm SUB SP,SP,#20    //{}將堆棧指針調(diào)回
   91   1       
   92   1       __asm LDMIA SP!,{R8}   //將SPSR彈出,放入R8中
   93   1      
   94   1       Mode|=~(0x20);         //將傳遞進(jìn)來的Mode其它位設(shè)置為1,只保留T位
   95   1       
   96   1       __asm ORR R8,R8,#0x20  //將SPSR中的T位設(shè)置為1{}
   97   1       __asm AND R8,R8,R1     //將SPSR的值與Mode相與。從而T位跟Mode的T位相同{}
   98   1       
   99   1       __asm STMDB SP!,{R8}   //將SPSR壓回棧中
  100   1       
  101   1       
  102   1       OSCurrentPcb=&OSSystemIdlePcb;   //當(dāng)前任務(wù)為系統(tǒng)空閑任務(wù)
  103   1      
  104   1       AddrOfSystemIdle=0;              //防止編譯器警告。請(qǐng)不要?jiǎng)h除該語句
  105   1      
  106   1      }
  107          //////////////////////////////////End of function//////////////////////////////////////////////
  108          
  109          
  110          /**********************************************************************************************
  111          功能:保存堆棧指針。堆棧指針被保存在當(dāng)前任務(wù)的TaskSP成員中。
  112          入口參數(shù)1:sp。當(dāng)前任務(wù)堆棧指針的地址值。
  113          返回:無。
  114          備注:sp由R0寄存器傳入。
  115          **********************************************************************************************/
  116          void OSSaveSP(uint32 sp)
  117          {
  118   1       OSCurrentPcb->TaskSP=sp;  //保存當(dāng)前堆棧指針
  119   1      }
  120          //////////////////////////////////End of function//////////////////////////////////////////////
  121          
  122          
  123          /**********************************************************************************************
  124          功能:恢復(fù)堆棧指針。將當(dāng)前任務(wù)的堆棧指針恢復(fù)。
  125          入口參數(shù)1:無。
ARM COMPILER V2.50a,  ARM_00_OS_TaskSwitch                                                 28/08/06  09:18:53  PAGE 3   

  126          返回:堆棧指針的地址值。被保存在R0中。
  127          備注:無。
  128          **********************************************************************************************/
  129          uint32 OSResumeSP(void)
  130          {
  131   1       return OSCurrentPcb->TaskSP;    //將堆棧指針的地址值返回
  132   1      }
  133          //////////////////////////////////End of function//////////////////////////////////////////////
  134          
  135          /**********************************************************************************************
  136          功能:設(shè)置堆棧。任務(wù)創(chuàng)建時(shí),要設(shè)置好其堆棧,使其看起來,就像任務(wù)剛被切換的任務(wù)一樣。
  137          入口參數(shù)1:StackAddr。32位的堆棧入口地址值,堆棧是往下生長(zhǎng)的,所以入口地址應(yīng)該是堆棧區(qū)的最高地址。
  138          入口參數(shù)2:TaskEntryAddr。32位的任務(wù)入口地址值。
  139          入口參數(shù)3:Mode。被創(chuàng)建任務(wù)代碼的模式。可選擇為OS_ARM_MODE或者OS_THUMB_MODE。
  140          返回:32位的堆棧地址。被壓入堆棧后,堆棧指針會(huì)更新。
  141          使用資源:使用軟中斷號(hào)4。
  142          備注:無。
  143          **********************************************************************************************/
  144          uint32 OSSetStack(uint32 StackAddr,uint32 TaskEntryAddr,uint32 Mode) __swi(4)
  145          {
  146   1      #define PushedBytes (16*4)    //壓入了16個(gè)字,共64字節(jié)
  147   1       //R0中保存的是堆棧入口地址
  148   1       __asm MOV R12,R0        //{}StackAddr傳進(jìn)時(shí),被放在了R0中。將R0轉(zhuǎn)存至R12中。
  149   1       __asm STMDB R12!,{R3}    //入口地址被TaskEntryAddr被編譯器轉(zhuǎn)移至R3中。將R3壓棧
  150   1       __asm MOV R8,#0         //{}R8清零
  151   1       __asm STMDB R12!,{R8}   //該位置保存的是R3。將其清0。
  152   1       __asm STMDB R12!,{R8}   //該位置保存的是R2。將其清0。
  153   1       __asm STMDB R12!,{R8}   //該位置保存的是R1。將其清0。
  154   1       __asm STMDB R12!,{R8}   //該位置保存的是R0。將其清0。
  155   1       
  156   1       __asm LDMIA SP,{R8}     //將剛壓入的SPSR(見SWI_VEC.S文件)出棧至R8中。
  157   1      
  158   1      
  159   1       Mode|=~(0x20);          //將Mode的其它位置1,只保留T位。
  160   1       __asm ORR R8,R8,#0x20   //將SPSR中的T位置1。
  161   1       __asm AND R8,R8,R2      //將SPSR的值與Mode相與。從而T位跟Mode的T位相同{}
  162   1       
  163   1       __asm STMDB R12!,{R8}   //將SPSR壓棧。任務(wù)被調(diào)度時(shí),SPSR將被返回至CPSR。 
  164   1       
  165   1       __asm MOV R8,#0         //R8清0{}
  166   1       
  167   1       __asm STMDB R12!,{R8}  //該位置保存的是用戶模式下的R14。將其清0。
  168   1       
  169   1       __asm STMDB R12!,{R8}  //該位置保存的是R12。將其清0。
  170   1       __asm STMDB R12!,{R8}  //該位置保存的是R11。將其清0。
  171   1       __asm STMDB R12!,{R8}  //該位置保存的是R10。將其清0。
  172   1       __asm STMDB R12!,{R8}  //該位置保存的是9。將其清0。
  173   1       __asm STMDB R12!,{R8}  //該位置保存的是R8。將其清0。
  174   1       __asm STMDB R12!,{R8}  //該位置保存的是R7。將其清0。
  175   1       __asm STMDB R12!,{R8}  //該位置保存的是R6。將其清0。
  176   1       __asm STMDB R12!,{R8}  //該位置保存的是R5。將其清0。
  177   1       __asm STMDB R12!,{R8}  //該位置保存的是R4。將其清0。
  178   1      
  179   1       TaskEntryAddr=0;       //防止編譯器警告。請(qǐng)不要?jiǎng)h除該語句。
  180   1      
  181   1       return StackAddr-PushedBytes;   //返回堆棧指針
  182   1      }
  183          //////////////////////////////////End of function//////////////////////////////////////////////
  184          
  185          
  186          /**********************************************************************************************
  187          功能:切換任務(wù)。任務(wù)被切換到優(yōu)先級(jí)最高的就緒態(tài)任務(wù)。
  188          入口參數(shù):無。
  189          返回:無。
  190          使用資源:使用軟中斷號(hào)3。
  191          備注:該函數(shù)為任務(wù)切換函數(shù),修改這里的代碼是要注意,可能會(huì)導(dǎo)致跑飛。
ARM COMPILER V2.50a,  ARM_00_OS_TaskSwitch                                                 28/08/06  09:18:53  PAGE 4   

  192          **********************************************************************************************/
  193          void OSTaskSwitch(void) __swi(3)
  194          {
  195   1      //將用戶模式下的堆棧地址裝入到R8中
  196   1       __asm MOV R8,SP         //{}特權(quán)模式下的堆棧指針暫時(shí)放到R8{}
  197   1       __asm STMDB R8!,{R13}^  //將用戶模式下的堆棧指針R13放入到特權(quán)模式下的堆棧中{}
  198   1       __asm NOP               //插入一個(gè)NOP指令,在訪問用戶模式下的寄存器后,后面不能緊跟訪問備份寄存器的指令

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品99久久久久久久女警| 亚洲在线视频网站| 黑人巨大精品欧美一区| 亚洲精品在线观| 九九国产精品视频| 欧美sm美女调教| 国产xxx精品视频大全| 国产精品久久久久影院色老大| 不卡的电影网站| 亚洲综合丝袜美腿| 欧美一级午夜免费电影| 国产成人夜色高潮福利影视| 国产精品日日摸夜夜摸av| 91美女精品福利| 日本亚洲一区二区| 久久蜜桃av一区精品变态类天堂| 成人精品免费网站| 亚洲成人免费观看| 欧美精品一区二区三区视频| 99久久99久久精品国产片果冻| 香蕉影视欧美成人| 精品国产一区二区三区av性色| 成人av网站大全| 亚洲va天堂va国产va久| 久久久国产午夜精品| 91蜜桃免费观看视频| 美国十次综合导航| 亚洲欧洲一区二区在线播放| 这里只有精品电影| 成人a区在线观看| 青青草原综合久久大伊人精品优势 | 亚洲三级在线免费观看| 91精品国产高清一区二区三区 | 久久精品国产成人一区二区三区 | 久久综合成人精品亚洲另类欧美 | 欧美日韩视频在线第一区| 精品午夜久久福利影院| 亚洲精品成人少妇| 久久在线观看免费| 欧美日韩国产大片| 99精品视频一区| 极品销魂美女一区二区三区| 亚洲国产日日夜夜| 国产精品毛片大码女人| 日韩欧美中文字幕公布| 欧美在线视频全部完| 成人午夜私人影院| 久久99日本精品| 亚洲免费电影在线| 国产精品欧美极品| 欧美大胆一级视频| 欧美日韩成人一区二区| 91在线精品一区二区| 国产精品亚洲专一区二区三区| 亚洲第一主播视频| 亚洲精品中文在线影院| 中文字幕日本不卡| 日本一区二区免费在线观看视频| 欧美成人精品高清在线播放| 91精品午夜视频| 欧美日韩国产首页| 色94色欧美sute亚洲线路二| 国产风韵犹存在线视精品| 精品一区二区三区在线观看国产 | 国产一区久久久| 蜜臀久久99精品久久久久久9| 亚洲无线码一区二区三区| 亚洲欧美另类图片小说| 一区在线观看视频| 亚洲欧美在线视频| 日韩理论片中文av| 亚洲欧美区自拍先锋| 中文字幕一区在线| 中文字幕一区二区三区视频| 自拍偷在线精品自拍偷无码专区 | 色婷婷久久一区二区三区麻豆| 大美女一区二区三区| 粉嫩蜜臀av国产精品网站| 国产成人av一区| 国产精品2024| 岛国av在线一区| 一本久道中文字幕精品亚洲嫩 | 欧美少妇xxx| 欧美午夜宅男影院| 欧美日韩在线播| 欧美一级日韩不卡播放免费| 欧美成人性福生活免费看| 久久夜色精品一区| 国产精品久久看| 夜夜嗨av一区二区三区网页| 亚洲二区视频在线| 秋霞影院一区二区| 国产激情偷乱视频一区二区三区| 成人一区二区视频| 91久久线看在观草草青青| 欧美日韩视频在线观看一区二区三区| 欧美日韩国产一级| 久久色视频免费观看| 中文字幕av一区 二区| 亚洲色图清纯唯美| 亚洲高清三级视频| 国精产品一区一区三区mba视频 | 丰满岳乱妇一区二区三区| 91香蕉国产在线观看软件| 欧美午夜寂寞影院| 337p日本欧洲亚洲大胆精品| √…a在线天堂一区| 亚洲国产视频直播| 黄页视频在线91| 91国产免费看| 精品成人a区在线观看| 国产精品国产三级国产普通话三级| 一区二区三区在线观看欧美| 免费成人在线网站| 91在线精品秘密一区二区| 欧美一级日韩免费不卡| 最新中文字幕一区二区三区| 日韩一区精品字幕| 东方欧美亚洲色图在线| 7777精品伊人久久久大香线蕉超级流畅| 精品国产污污免费网站入口| 亚洲精品国产精华液| 激情综合亚洲精品| 欧美综合一区二区三区| 国产调教视频一区| 亚洲电影一区二区| 成人黄色国产精品网站大全在线免费观看| 欧美日韩精品电影| 国产精品剧情在线亚洲| 免费黄网站欧美| 色播五月激情综合网| 久久久一区二区三区| 肉肉av福利一精品导航| www.99精品| 久久久影视传媒| 青青草原综合久久大伊人精品 | 欧美日韩精品欧美日韩精品一综合| 久久久久久久久久久电影| 亚洲影院久久精品| www.亚洲免费av| 久久久精品人体av艺术| 麻豆免费看一区二区三区| 在线观看日韩国产| 国产精品久久久久一区| 国产经典欧美精品| 欧美精品一区二区精品网| 亚洲444eee在线观看| 色综合咪咪久久| 国产精品久久久久三级| 国产成人免费在线观看不卡| 欧美成人vr18sexvr| 欧美a级理论片| 91麻豆精品国产91久久久资源速度 | 一区二区三区视频在线看| 成人精品小蝌蚪| 国产精品少妇自拍| 成人一级视频在线观看| 国产性做久久久久久| 国产一区不卡精品| 久久影视一区二区| 国内久久精品视频| 久久日韩粉嫩一区二区三区| 久久成人免费电影| 精品精品欲导航| 极品美女销魂一区二区三区 | 日日摸夜夜添夜夜添亚洲女人| 欧美综合一区二区三区| 亚洲最新视频在线播放| 91高清视频在线| 亚洲一区二区影院| 色伊人久久综合中文字幕| 亚洲欧美激情在线| 欧美性猛交xxxx黑人交| 亚洲成人免费电影| 欧美一级在线免费| 国产九色sp调教91| 中文子幕无线码一区tr| 国产91精品精华液一区二区三区| 国产三级精品三级| 99久久精品国产毛片| 亚洲一区二区三区四区在线免费观看| 一本色道久久加勒比精品| 亚洲成人av福利| 日韩欧美国产一区在线观看| 韩国av一区二区三区四区| 国产精品嫩草影院av蜜臀| 97se狠狠狠综合亚洲狠狠| 亚洲精品高清视频在线观看| 欧美日韩国产首页在线观看| 免费成人在线影院| 中文字幕久久午夜不卡| 色悠悠久久综合| 蜜臀av亚洲一区中文字幕| 国产亲近乱来精品视频 | 丝袜亚洲另类欧美| 精品久久久久久无| 99久久精品免费观看| 丝袜国产日韩另类美女| 国产欧美日韩不卡免费| 在线免费不卡视频|