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

📄 test.lst

📁 ARM下的多任务操作系统源码:GogotoOS
💻 LST
📖 第 1 页 / 共 3 页
字号:
ARM COMPILER V2.32a,  Test                                                                 28/02/08  23:05:56  PAGE 1   


ARM COMPILER V2.32a, COMPILATION OF MODULE Test
OBJECT MODULE PLACED IN .\Output\Test.obj
COMPILER INVOKED BY: D:\Program Files\Keil\ARM\BIN\CA.exe Source\App\Test.c ARM BROWSE DEBUG PRINT(.\LIST\TEST.LST) TABS
                    -(4) OBJECT(.\Output\Test.obj) 

stmt  level    source

    1          
    2          
    3          #include        <GGT_OS.h>
    4          
    5          #include        "Source\OS_CPU\lpc210X.h"
    6          
    7          #define         NOP()      __asm{NOP}
    8          
    9          
   10          UINT8 C;
   11          
   12          UINT8 Buf[100];
   13          INT32 Len = 0;
   14          
   15          void IntUart0(void)   __irq   
   16          {                                  
   17   1          NOP();NOP();
   18   1          switch (U0IIR & 0x0e)
   19   1          {
   20   2              case 0x02:
   21   2              
   22   2              break;
   23   2      
   24   2              case 0x04:
   25   2                  while((U0LSR & 0x01) == 1)
   26   2                      C = U0RBR;  
   27   2                  IOPIN ^= (1 << 27);
   28   2              break;          
   29   2              case 0x0C:  
   30   2                  while((U0LSR & 0x01) == 1)
   31   2                  {
   32   3                      C = U0RBR;
   33   3                      Buf[Len++] = C;
   34   3                  }
   35   2                  IOPIN ^= (1 << 27);
   36   2                  //while(1);
   37   2              break;
   38   2              default: break;
   39   2          }
   40   1          VICVectAddr = 0;
   41   1          NOP();NOP();
   42   1          //VICVectAddr = 0;
   43   1      }
   44          
   45          #define         PLL_SCALE     5
   46          #define         Fosc            11059200
   47          #define         Fcclk       (Fosc * PLL_SCALE)
   48          #define         Fcco        (Fcclk * 4)
   49          #define         Fpclk       (Fcclk / 1) * 1
   50          #define         Fwdt        (Fpclk / 1)
   51          #define         Fadclk      1000000
   52          
   53          #define         IRQ_ENABLE              (1<<5)
   54          
   55          #define         WDT_INT_VECT            0       // 分配IRQ通道
   56          #define         SOFT_INT_VECT           1       // 分配IRQ通道
   57          #define         TIME0_INT_VECT          4       // 分配IRQ通道
   58          #define         TIME1_INT_VECT          5       // 分配IRQ通道
ARM COMPILER V2.32a,  Test                                                                 28/02/08  23:05:56  PAGE 2   

   59          #define         UART0_INT_VECT          6       // 分配IRQ通道  1
   60          #define         UART1_INT_VECT          7       // 分配IRQ通道  2
   61          #define         PWM0_INT_VECT           8       // 分配IRQ通道
   62          #define         IIC_INT_VECT            9       // 分配IRQ通道  6
   63          #define         SPI0_INT_VECT           10      // 分配IRQ通道
   64          #define         SPI1_INT_VECT           11      // 分配IRQ通道
   65          #define         PLL_INT_VECT            12      // 分配IRQ通道
   66          #define         RTC_INT_VECT            13      // 分配IRQ通道  3
   67          #define         EINT0_INT_VECT          14      // 分配IRQ通道  4
   68          #define         EINT1_INT_VECT          15      // 分配IRQ通道
   69          #define         EINT2_INT_VECT          16      // 分配IRQ通道  5
   70          #define         EINT3_INT_VECT          17      // 分配IRQ通道
   71          #define         ADC0_INT_VECT           18      // 分配IRQ通道
   72          //#define           IIC1_INT_VECT           19      // 分配IRQ通道
   73          //#define           BOD_INT_VECT            20      // 分配IRQ通道
   74          //#define           ADC1_INT_VECT           21      // 分配IRQ通道
   75          
   76          /////////////   EXTMODE 
   77          #define         EXTMODE0                0       // 
   78          #define         EXTMODE1                1       // 
   79          #define         EXTMODE2                2       // 
   80          #define         EXTMODE3                3       // 
   81          
   82          /////////////   EXTPOLAR    
   83          #define         EXTPOLAR0               0       // 
   84          #define         EXTPOLAR1               1       // 
   85          #define         EXTPOLAR2               2       // 
   86          #define         EXTPOLAR3               3       // 
   87          
   88          /////////////  EXTINT
   89          #define         EINT0                   0
   90          #define         EINT1                   1
   91          #define         EINT2                   2
   92          #define         EINT3                   3
   93          
   94          #define  CHK_UART0          16      // P0.16   
   95          #define  CTL_UART0          17      // P0.17  =0:CPU对外,=1:
   96          #define Uart0_OFF       (IOSET|=(1<<CTL_UART0))         //关闭CPU的uart0(接电脑或其他)
   97          #define Uart0_ON        (IOCLR|=(1<<CTL_UART0))         //打开CPU的uart0(接电脑或其他)
   98          
   99          void InitUart0(void)
  100          {
  101   1          unsigned short  Fdiv;
  102   1      
  103   1          PINSEL0 |= 0x00000005; 
  104   1          U0LCR = 0x83;
  105   1                  
  106   1          Fdiv = (Fpclk / 16) / (9600); 
  107   1          U0DLM = Fdiv / 256;                         
  108   1          U0DLL = Fdiv % 256;
  109   1                  
  110   1          U0LCR = 0x03;
  111   1          U0IER = 0x03;
  112   1          U0FCR = 0xC7;
  113   1          
  114   1          VICVectAddr2  = (unsigned long)IntUart0;
  115   1          VICVectCntl2  = (IRQ_ENABLE | UART0_INT_VECT);
  116   1          VICIntEnable  |= (1 << UART0_INT_VECT);
  117   1      
  118   1          IODIR   |= (1<<17);    //P0.17为输出
  119   1          Uart0_ON;
  120   1      }
  121          
  122          
  123          #define         Nop()      __asm{NOP}
  124          
ARM COMPILER V2.32a,  Test                                                                 28/02/08  23:05:56  PAGE 3   

  125          
  126          void SetWDT(void)
  127          {
  128   1          IOPIN ^= (1 << 28);     
  129   1          IOCLR  = (1<<19); 
  130   1          Nop();  Nop();Nop();    Nop();Nop();    Nop();Nop();    Nop();
  131   1          IOSET  = (1<<19); 
  132   1          Nop();  Nop();Nop();    Nop();Nop();    Nop();Nop();    Nop();
  133   1      }
  134          
  135          INT32 IsBusy = 0;
  136          
  137          void Dec(INT32 * Data, INT32 DecV)
  138          {
  139   1          (*Data) -= DecV;
  140   1      }
  141          
  142          void AddDec(UINT8 Flag, INT32 * Data, INT32 AddV, INT32 DecV)
  143          {
  144   1          (*Data) += AddV;
  145   1          Dec(Data, DecV);
  146   1          IsBusy = 1;
  147   1          U0THR = Flag;
  148   1          U0THR = *(((UINT8 *)Data) + 0);
  149   1          U0THR = *(((UINT8 *)Data) + 1);
  150   1          U0THR = *(((UINT8 *)Data) + 2);
  151   1          U0THR = *(((UINT8 *)Data) + 3);
  152   1          U0THR = ' ';
  153   1          U0THR = ' ';
  154   1          U0THR = ' ';
  155   1          IsBusy = 0;
  156   1      }
  157          
  158          void Send(UINT8 Flag, INT32 *Data)
  159          {
  160   1          AddDec(Flag, Data, 2, 1);   
  161   1      }
  162          
  163          
  164          UINT32 TaskID1 = 0;
  165          _Mut Mut;
  166          
  167          void TaskMain1(UINT32 Param)    __task
  168          {
  169   1          _Msg Msg;
  170   1          UINT32 ID;
  171   1      
  172   1          OSTimerSet(OSTaskSelf(), 1000);
  173   1          ID = OSTimerSet(OSTaskSelf(), 5000);
  174   1          OSTimerSet(OSTaskSelf(), 10000);
  175   1          OSTimerKill(ID);
  176   1              
  177   1          
  178   1          while(Param == 156)
  179   1          {
  180   2              SetWDT();
  181   2              OSTaskDelay(100);
  182   2              if(OSTaskMsgPeek(&Msg))
  183   2              {
  184   3                  if(Msg.Msg == 1000)
  185   3                      U0THR = Msg.wParam;
  186   3                  if(Msg.Msg == OS_MSG_TIMER)
  187   3                      U0THR = 'T';
  188   3              }
  189   2          }
  190   1      }
ARM COMPILER V2.32a,  Test                                                                 28/02/08  23:05:56  PAGE 4   

  191          
  192          void TaskMain2(UINT32 Param)    __task
  193          {
  194   1          while(Param == 158)
  195   1          {
  196   2              IOPIN ^= (1 << 27);
  197   2              OSMutWait(&Mut);
  198   2              OSTaskMsgPost(TaskID1, 1000, '2', 0);
  199   2              OSMutRelease(&Mut);
  200   2          }
  201   1      }
  202          
  203          void TaskMain3(UINT32 Param)    __task
  204          {
  205   1          while(Param == 158)
  206   1          {
  207   2              OSMutWait(&Mut);
  208   2              OSTaskDelay(4000);
  209   2              OSMutRelease(&Mut);
  210   2          }
  211   1      }
  212          
  213          void TaskMain4(UINT32 Param)    __task
  214          {
  215   1          while(Param == 158)
  216   1          {
  217   2              IOPIN ^= (1 << 29);
  218   2              OSMutWait(&Mut);
  219   2              OSTaskMsgPost(TaskID1, 1000, '4', 0);
  220   2              OSMutRelease(&Mut);
  221   2          }
  222   1      }
  223          
  224          
  225          void TaskUasrMain(void) __task
  226          {
  227   1          IODIR |= ((1 << 27) | (1 << 28) | (1 << 29) | (1 << 19));
  228   1          IOCLR =  ((1 << 27) | (1 << 28) | (1 << 29) | (1 << 19));
  229   1          InitUart0();
  230   1          U0THR = 'R';
  231   1          OSMutInit(&Mut);
  232   1          TaskID1 = OSTaskCreate(TaskMain1, 255, 156);
  233   1          OSTaskCreate(TaskMain2, 254, 158);
  234   1          OSTaskCreate(TaskMain3, 255, 158);
  235   1          OSTaskCreate(TaskMain4, 255, 158);
  236   1      
  237   1          while(1);
  238   1      }
  239          
  240          
ARM COMPILER V2.32a,  Test                                                                 28/02/08  23:05:56  PAGE 5   

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** EXTERNALS:
 EXTERN CODE32 (OSTaskCreate?A)
 EXTERN CODE32 (OSTaskMsgPeek?A)
 EXTERN CODE32 (OSTaskMsgPost?A)
 EXTERN CODE32 (OSTaskSelf?A)
 EXTERN CODE32 (OSTaskDelay?A)
 EXTERN CODE32 (OSMutWait?A)
 EXTERN CODE32 (OSMutRelease?A)
 EXTERN CODE32 (OSMutInit?A)
 EXTERN CODE32 (OSTimerKill?A)
 EXTERN CODE32 (OSTimerSet?A)
 EXTERN CODE32 (?C?SDIV?A)



*** PUBLICS:
 PUBLIC         IntUart0?A
 PUBLIC         InitUart0?A
 PUBLIC         SetWDT?A
 PUBLIC         Dec?A
 PUBLIC         AddDec?A
 PUBLIC         Send?A
 PUBLIC         TaskMain1?A
 PUBLIC         TaskMain2?A
 PUBLIC         TaskMain3?A
 PUBLIC         TaskMain4?A

⌨️ 快捷键说明

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