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

📄 interrupt_usart.lst

📁 关于usb的一段程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
     89          		COM0->US_RPR = (unsigned int) buff_rx1;
   \   00000092   0099               LDR         R1,[SP, #+0]
   \   00000094   0160               STR         R1,[R0, #+0]
     90          		COM0->US_RCR = 100;
   \   00000096   6421               MOV         R1,#+100
   \   00000098   4160               STR         R1,[R0, #+4]
     91           	        pCDC.Write(&pCDC, buff_rx,status);
   \   0000009A   321C               MOV         R2,R6
   \   0000009C   211C               MOV         R1,R4
   \   0000009E   0831               ADD         R1,#+8
   \   000000A0   381C               MOV         R0,R7
   \   000000A2   3B69               LDR         R3,[R7, #+16]
   \   000000A4   ........           BL          ??rT_BX_R3
     92           	        first =1;
   \   000000A8   0120               MOV         R0,#+1
   \   000000AA   0BE0               B           ??Usart_c_irq_handler_6
     93          	   }else{
     94          	        COM0->US_RPR = (unsigned int) buff_rx;
   \                     ??Usart_c_irq_handler_5:
   \   000000AC   0199               LDR         R1,[SP, #+4]
   \   000000AE   0160               STR         R1,[R0, #+0]
     95          	        COM0->US_RCR = 100;
   \   000000B0   6421               MOV         R1,#+100
   \   000000B2   4160               STR         R1,[R0, #+4]
     96          	        pCDC.Write(&pCDC, buff_rx1,status);
   \   000000B4   321C               MOV         R2,R6
   \   000000B6   211C               MOV         R1,R4
   \   000000B8   6C31               ADD         R1,#+108
   \   000000BA   381C               MOV         R0,R7
   \   000000BC   3B69               LDR         R3,[R7, #+16]
   \   000000BE   ........           BL          ??rT_BX_R3
     97          	        first=0;
   \   000000C2   0020               MOV         R0,#+0
   \                     ??Usart_c_irq_handler_6:
   \   000000C4   6060               STR         R0,[R4, #+4]
     98          	    }
     99                      COM0->US_CR = AT91C_US_STTTO;
   \   000000C6   2068               LDR         R0,[R4, #+0]
   \   000000C8   8021               MOV         R1,#+128
   \   000000CA   0901               LSL         R1,R1,#+4          ;; #+2048
   \   000000CC   0160               STR         R1,[R0, #+0]
    100                    }
    101          	}
    102          	//* Reset the satus bit for error
    103          	 USART_pt->US_CR = AT91C_US_RSTSTA;
   \                     ??Usart_c_irq_handler_4:
   \   000000CE   8020               MOV         R0,#+128
   \   000000D0   4000               LSL         R0,R0,#+1          ;; #+256
   \   000000D2   2860               STR         R0,[R5, #+0]
    104          }
   \   000000D4   FCBC               POP         {R2-R7}
   \   000000D6   01BC               POP         {R0}
   \   000000D8   0047               BX          R0                 ;; return
   \   000000DA   C046               NOP         
   \                     ??Usart_c_irq_handler_0:
   \   000000DC   ........           DC32        pCDC
    105          //*-------------------------- External Function -------------------------------
    106          
    107          //*----------------------------------------------------------------------------
    108          //* \fn    AT91F_US_Printk
    109          //* \brief This function is used to send a string through the US channel
    110          //*----------------------------------------------------------------------------

   \                                 In segment CODE, align 4, keep-with-next
    111          void AT91F_US_Put( char *buffer) // \arg pointer to a string ending by \0
    112          {
   \                     AT91F_US_Put:
   \   00000000   06E0               B           ??AT91F_US_Put_0
    113          	while(*buffer != '\0') {
    114          		while (!AT91F_US_TxReady(COM0));
   \                     ??AT91F_US_Put_1:
   \   00000002   ....               LDR         R1,??DataTable2    ;; COM0
   \   00000004   0968               LDR         R1,[R1, #+0]
   \   00000006   4A69               LDR         R2,[R1, #+20]
   \   00000008   9207               LSL         R2,R2,#+30
   \   0000000A   FAD5               BPL         ??AT91F_US_Put_1
    115          		AT91F_US_PutChar(COM0, *buffer++);
   \   0000000C   CB61               STR         R3,[R1, #+28]
   \   0000000E   401C               ADD         R0,R0,#+1
    116          	}
   \                     ??AT91F_US_Put_0:
   \   00000010   0378               LDRB        R3,[R0, #+0]
   \   00000012   002B               CMP         R3,#+0
   \   00000014   F5D1               BNE         ??AT91F_US_Put_1
    117          }
   \   00000016   00B0               ADD         SP,#+0
   \   00000018   7047               BX          LR                 ;; return
    118          
    119          //*----------------------------------------------------------------------------
    120          //* Function Name       : Usart_init
    121          //* Object              : USART initialization
    122          //* Input Parameters    : none
    123          //* Output Parameters   : TRUE
    124          //*----------------------------------------------------------------------------

   \                                 In segment CODE, align 4, keep-with-next
    125          void Usart_init ( void )
    126          //* Begin
    127          {
   \                     Usart_init:
   \   00000000   F0B5               PUSH        {R4-R7,LR}
    128              COM0= AT91C_BASE_US0;
   \   00000002   ....               LDR         R4,??DataTable2    ;; COM0
   \   00000004   2148               LDR         R0,??Usart_init_0  ;; 0xfffc0000
   \   00000006   2060               STR         R0,[R4, #+0]
    129              //* Define RXD and TXD as peripheral
    130              // Configure PIO controllers to periph mode
    131              AT91F_PIO_CfgPeriph(
    132          	 AT91C_BASE_PIOA, // PIO controller base address
    133          	 ((unsigned int) AT91C_PA5_RXD0    ) |
    134          	 ((unsigned int) AT91C_PA6_TXD0    ) , // Peripheral A
    135          	 0 ); // Peripheral B
   \   00000008   6020               MOV         R0,#+96
   \   0000000A   2149               LDR         R1,??Usart_init_0+0x4  ;; 0xfffff470
   \   0000000C   0860               STR         R0,[R1, #+0]
   \   0000000E   0025               MOV         R5,#+0
   \   00000010   2049               LDR         R1,??Usart_init_0+0x8  ;; 0xfffff474
   \   00000012   0D60               STR         R5,[R1, #+0]
   \   00000014   2049               LDR         R1,??Usart_init_0+0xC  ;; 0xfffff404
   \   00000016   0860               STR         R0,[R1, #+0]
    136          
    137              //* First, enable the clock of the PIOB
    138              AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_US0 ) ;
   \   00000018   4026               MOV         R6,#+64
   \   0000001A   2048               LDR         R0,??Usart_init_0+0x10  ;; 0xfffffc10
   \   0000001C   0660               STR         R6,[R0, #+0]
    139          
    140              //* Usart Configure
    141              AT91F_US_Configure (COM0, AT91B_MCK,AT91C_US_ASYNC_MODE,USART_BAUD_RATE , 0);
   \   0000001E   2768               LDR         R7,[R4, #+0]
   \   00000020   0020               MOV         R0,#+0
   \   00000022   C043               MVN         R0,R0              ;; #-1
   \   00000024   F860               STR         R0,[R7, #+12]
   \   00000026   AC20               MOV         R0,#+172
   \   00000028   3860               STR         R0,[R7, #+0]
   \   0000002A   1A20               MOV         R0,#+26
   \   0000002C   3862               STR         R0,[R7, #+32]
   \   0000002E   BD62               STR         R5,[R7, #+40]
   \   00000030   E630               ADD         R0,#+230
   \   00000032   3818               ADD         R0,R7,R0
   \   00000034   ........           _BLF        AT91F_PDC_Open,??AT91F_PDC_Open??rT
   \   00000038   8C20               MOV         R0,#+140
   \   0000003A   0001               LSL         R0,R0,#+4          ;; #+2240
   \   0000003C   7860               STR         R0,[R7, #+4]
    142          
    143              //* Enable usart
    144              COM0->US_CR = AT91C_US_RXEN | AT91C_US_TXEN;
   \   0000003E   2068               LDR         R0,[R4, #+0]
   \   00000040   5021               MOV         R1,#+80
   \   00000042   0160               STR         R1,[R0, #+0]
    145          
    146              //* open Usart interrupt
    147              AT91F_AIC_ConfigureIt (AT91C_BASE_AIC, AT91C_ID_US0, USART_INTERRUPT_LEVEL,
    148                                     AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, Usart_c_irq_handler);
   \   00000044   1648               LDR         R0,??Usart_init_0+0x14  ;; 0xfffff098
   \   00000046   0168               LDR         R1,[R0, #+0]
   \   00000048   1649               LDR         R1,??Usart_init_0+0x18  ;; 0xfffff124
   \   0000004A   0E60               STR         R6,[R1, #+0]
   \   0000004C   1649               LDR         R1,??Usart_init_0+0x1C  ;; Usart_c_irq_handler
   \   0000004E   0160               STR         R1,[R0, #+0]
   \   00000050   1648               LDR         R0,??Usart_init_0+0x20  ;; 0xfffff018
   \   00000052   0121               MOV         R1,#+1
   \   00000054   0160               STR         R1,[R0, #+0]
   \   00000056   1648               LDR         R0,??Usart_init_0+0x24  ;; 0xfffff128
   \   00000058   0660               STR         R6,[R0, #+0]
    149              AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_US0);
   \   0000005A   1648               LDR         R0,??Usart_init_0+0x28  ;; 0xfffff120
   \   0000005C   0660               STR         R6,[R0, #+0]
    150              // Set the PDC
    151              AT91F_PDC_Open (AT91C_BASE_PDC_US0);
   \   0000005E   1648               LDR         R0,??Usart_init_0+0x2C  ;; 0xfffc0100
   \   00000060   ........           _BLF        AT91F_PDC_Open,??AT91F_PDC_Open??rT
    152              COM0->US_RPR = (unsigned int) buff_rx;
   \   00000064   B000               LSL         R0,R6,#+2
   \   00000066   2168               LDR         R1,[R4, #+0]
   \   00000068   221C               MOV         R2,R4
   \   0000006A   0832               ADD         R2,#+8
   \   0000006C   0A50               STR         R2,[R1, R0]
    153              COM0->US_RCR = 100;
   \   0000006E   001D               ADD         R0,R0,#+4
   \   00000070   2168               LDR         R1,[R4, #+0]
   \   00000072   6422               MOV         R2,#+100
   \   00000074   0A50               STR         R2,[R1, R0]
    154              first = 0;
   \   00000076   6560               STR         R5,[R4, #+4]
    155              COM0->US_RTOR = 10;
   \   00000078   2068               LDR         R0,[R4, #+0]
   \   0000007A   0A21               MOV         R1,#+10
   \   0000007C   4162               STR         R1,[R0, #+36]
    156              //* Enable USART IT error and AT91C_US_ENDRX
    157               AT91F_US_EnableIt(COM0,AT91C_US_RXBUFF | AT91C_US_TIMEOUT );
   \   0000007E   2068               LDR         R0,[R4, #+0]
   \   00000080   8821               MOV         R1,#+136
   \   00000082   4901               LSL         R1,R1,#+5          ;; #+4352
   \   00000084   8160               STR         R1,[R0, #+8]
    158          //* End
    159          }
   \   00000086   F0BC               POP         {R4-R7}
   \   00000088   01BC               POP         {R0}
   \   0000008A   0047               BX          R0                 ;; return
   \                     ??Usart_init_0:
   \   0000008C   0000FCFF           DC32        0xfffc0000
   \   00000090   70F4FFFF           DC32        0xfffff470
   \   00000094   74F4FFFF           DC32        0xfffff474
   \   00000098   04F4FFFF           DC32        0xfffff404
   \   0000009C   10FCFFFF           DC32        0xfffffc10
   \   000000A0   98F0FFFF           DC32        0xfffff098
   \   000000A4   24F1FFFF           DC32        0xfffff124
   \   000000A8   ........           DC32        Usart_c_irq_handler
   \   000000AC   18F0FFFF           DC32        0xfffff018
   \   000000B0   28F1FFFF           DC32        0xfffff128
   \   000000B4   20F1FFFF           DC32        0xfffff120
   \   000000B8   0001FCFF           DC32        0xfffc0100

   \                                 In segment CODE, align 4, keep-with-next
   \                     ??DataTable2:
   \   00000000   ........           DC32        COM0

   Maximum stack usage in bytes:

     Function            CSTACK
     --------            ------
     AT91F_PDC_Open          0
     AT91F_US_Put            4
     Trace_Toggel_LED        4
     Usart_c_irq_handler    28
     Usart_init             20


   Segment part sizes:

     Function/Label      Bytes
     --------------      -----
     AT91F_PDC_Open        36
     COM0                 208
     Trace_Toggel_LED      36
     Usart_c_irq_handler  224
     AT91F_US_Put          26
     Usart_init           188
     ??DataTable2           4
      Others               54

 
 556 bytes in segment CODE
 208 bytes in segment DATA_Z
  12 bytes in segment INITTAB
 
 478 bytes of CODE memory (+ 90 bytes shared)
 208 bytes of DATA memory

Errors: none
Warnings: none

⌨️ 快捷键说明

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