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

📄 interrupt_usart.lst

📁 AT91SAM7X256芯片底层驱动源码。在IAR430环境下编译
💻 LST
📖 第 1 页 / 共 3 页
字号:
   \              6564        
   \   000000C0   2E636F6D2020       DC8 2EH, 63H, 6FH, 6DH, 20H, 20H, 3DH, 3DH
   \              3D3D        
   \   000000C8   0A0D3D3D3D3D       DC8 0AH, 0DH, 3DH, 3DH, 3DH, 3DH, 3DH, 3DH
   \              3D3D        
   \   000000D0   3D3D3D3D3D3D       DC8 3DH, 3DH, 3DH, 3DH, 3DH, 3DH, 3DH, 3DH
   \              3D3D        
   \   000000D8   3D3D3D3D3D3D       DC8 3DH, 3DH, 3DH, 3DH, 3DH, 3DH, 3DH, 3DH
   \              3D3D        
   \   000000E0   3D3D3D3D3D3D       DC8 3DH, 3DH, 3DH, 3DH, 3DH, 3DH, 3DH, 3DH
   \              3D3D        
   \   000000E8   3D3D3D3D3D3D       DC8 3DH, 3DH, 3DH, 3DH, 3DH, 3DH, 3DH, 3DH
   \              3D3D        
   \   000000F0   3D3D3D3D3D3D       DC8 3DH, 3DH, 3DH, 3DH, 3DH, 3DH, 3DH, 3DH
   \              3D3D        
   \   000000F8   3D3D0A0D00         DC8 3DH, 3DH, 0AH, 0DH, 0
   \   000000FD   000000             DC8 0, 0, 0
     27          {
     28          "\n\r================================================"
     29          "\n\r==         欢迎使用英贝德公司的产品           =="
     30          "\n\r==         EBDSAM7X 各种中断的演示测试        =="
     31          "\n\r==   更多的的帮助请到 http://www.szembed.com  =="
     32          "\n\r================================================\n\r"
     33          };

   \                                 In segment DATA_C, align 4, align-sorted
     34          static const char atmel_header[]=
   \                     ??atmel_header:
   \   00000000   0A0D20202A2A       DC8 0AH, 0DH, 20H, 20H, 2AH, 2AH, 2AH, 20H
   \              2A20        
   \   00000008   41544D454C20       DC8 41H, 54H, 4DH, 45H, 4CH, 20H, 55H, 73H
   \              5573        
   \   00000010   617274312049       DC8 61H, 72H, 74H, 31H, 20H, 49H, 52H, 51H
   \              5251        
   \   00000018   202A2A2A0A0D       DC8 20H, 2AH, 2AH, 2AH, 0AH, 0DH, 43H, 6FH
   \              436F        
   \   00000020   707972696768       DC8 70H, 79H, 72H, 69H, 67H, 68H, 74H, 20H
   \              7420        
   \   00000028   284329203230       DC8 28H, 43H, 29H, 20H, 32H, 30H, 30H, 35H
   \              3035        
   \   00000030   2041544D454C       DC8 20H, 41H, 54H, 4DH, 45H, 4CH, 20H, 43H
   \              2043        
   \   00000038   6F72706F7261       DC8 6FH, 72H, 70H, 6FH, 72H, 61H, 74H, 69H
   \              7469        
   \   00000040   6F6E73205665       DC8 6FH, 6EH, 73H, 20H, 56H, 65H, 72H, 73H
   \              7273        
   \   00000048   696F6E3A2031       DC8 69H, 6FH, 6EH, 3AH, 20H, 31H, 2EH, 30H
   \              2E30        
   \   00000050   0A0D00             DC8 0AH, 0DH, 0
   \   00000053   00                 DC8 0
     35          {
     36          "\n\r  *** ATMEL Usart1 IRQ ***\n\r"
     37          "Copyright (C) 2005 ATMEL Corporations Version: 1.0\n\r"
     38          };
     39          
     40          //* \fn    AT91F_US_Baudrate
     41          //* \brief Calculate the baudrate
     42          //* Standard Asynchronous Mode : 8 bits , 1 stop , no parity
     43          #define AT91C_US_ASYNC_MODE ( AT91C_US_USMODE_NORMAL + \
     44                                  AT91C_US_NBSTOP_1_BIT + \
     45                                  AT91C_US_PAR_NONE + \
     46                                  AT91C_US_CHRL_8_BITS + \
     47                                  AT91C_US_CLKS_CLOCK )
     48          
     49          //*------------------------- Internal Function --------------------------------
     50          
     51          //*----------------------------------------------------------------------------
     52          //* Function Name       : Usart_c_irq_handler
     53          //* Object              : C handler interrupt function calAT91B_LED by the interrupts
     54          //*                       assembling routine
     55          //* Input Parameters    : <RTC_pt> time rtc descriptor
     56          //* Output Parameters   : increment count_timer0_interrupt
     57          //*----------------------------------------------------------------------------

   \                                 In segment CODE_I, align 4, keep-with-next
     58          __ramfunc void Usart_c_irq_handler(void)
   \                     Usart_c_irq_handler:
   \   00000000   ....               B           ?Subroutine4

   \                                 In segment CODE_I, align 4, keep-with-next
   \                     ?Subroutine4:
   \   00000000   10B4               PUSH        {R4}
   \   00000002   1248               LDR         R0,??Subroutine4_0  ;; 0xfffc0014
   \   00000004   0068               LDR         R0,[R0, #+0]
   \   00000006   1249               LDR         R1,??Subroutine4_0+0x4  ;; 0xfffc001c
   \   00000008   124A               LDR         R2,??Subroutine4_0+0x8  ;; 0xfffc0018
   \   0000000A   C307               LSL         R3,R0,#+0x1F
   \   0000000C   04D5               BPL         ??Subroutine4_1
   \   0000000E   1368               LDR         R3,[R2, #+0]
   \   00000010   CC0D               LSR         R4,R1,#+0x17
   \   00000012   2340               AND         R3,R4
   \   00000014   1C40               AND         R4,R3
   \   00000016   0C60               STR         R4,[R1, #+0]
   \                     ??Subroutine4_1:
   \   00000018   8306               LSL         R3,R0,#+0x1A
   \   0000001A   02D5               BPL         ??Subroutine4_2
   \   0000001C   1268               LDR         R2,[R2, #+0]
   \   0000001E   4F22               MOV         R2,#+0x4F
   \   00000020   0A60               STR         R2,[R1, #+0]
   \                     ??Subroutine4_2:
   \   00000022   0206               LSL         R2,R0,#+0x18
   \   00000024   01D5               BPL         ??Subroutine4_3
   \   00000026   5022               MOV         R2,#+0x50
   \   00000028   0A60               STR         R2,[R1, #+0]
   \                     ??Subroutine4_3:
   \   0000002A   4206               LSL         R2,R0,#+0x19
   \   0000002C   01D5               BPL         ??Subroutine4_4
   \   0000002E   4622               MOV         R2,#+0x46
   \   00000030   0A60               STR         R2,[R1, #+0]
   \                     ??Subroutine4_4:
   \   00000032   8022               MOV         R2,#+0x80
   \   00000034   5200               LSL         R2,R2,#+0x1        ;; #+0x100
   \   00000036   084B               LDR         R3,??Subroutine4_0+0xC  ;; 0xfffc0000
   \   00000038   1042               TST         R0,R2
   \   0000003A   03D0               BEQ         ??Subroutine4_5
   \   0000003C   D000               LSL         R0,R2,#+0x3
   \   0000003E   1860               STR         R0,[R3, #+0]
   \   00000040   5420               MOV         R0,#+0x54
   \   00000042   0860               STR         R0,[R1, #+0]
   \                     ??Subroutine4_5:
   \   00000044   1A60               STR         R2,[R3, #+0]
   \   00000046   10BC               POP         {R4}
   \   00000048   7047               BX          LR                 ;; return
   \   0000004A   C046               NOP         
   \                     ??Subroutine4_0:
   \   0000004C   1400FCFF           DC32        0xfffc0014
   \   00000050   1C00FCFF           DC32        0xfffc001c
   \   00000054   1800FCFF           DC32        0xfffc0018
   \   00000058   0000FCFF           DC32        0xfffc0000
     59          {
     60          	AT91PS_USART USART_pt = AT91C_BASE_US0;
     61          	unsigned int status;
     62          	//* get Usart status register
     63          	status = USART_pt->US_CSR;
     64          	if ( status & AT91C_US_RXRDY){
     65          		//* Get byte and send
     66          		AT91F_US_PutChar (USART_pt, AT91F_US_GetChar(USART_pt));
     67          	}
     68          
     69          	if ( status & AT91C_US_OVRE) {
     70          		//* clear US_RXRDY
     71          		 AT91F_US_GetChar(USART_pt);
     72          		 AT91F_US_PutChar (USART_pt, 'O');
     73          	}
     74          
     75          	//* Check error
     76          	if ( status & AT91C_US_PARE) {
     77          		 AT91F_US_PutChar (USART_pt, 'P');
     78          	}
     79          
     80          	if ( status & AT91C_US_FRAME) {
     81          		 AT91F_US_PutChar (USART_pt, 'F');
     82          	}
     83          
     84          	if ( status & AT91C_US_TIMEOUT){
     85          		USART_pt->US_CR = AT91C_US_STTTO;
     86          		 AT91F_US_PutChar (USART_pt, 'T');
     87          	}
     88          
     89          	//* Reset the satus bit
     90          	 USART_pt->US_CR = AT91C_US_RSTSTA;
     91          }
     92          

   \                                 In segment CODE_I, align 4, keep-with-next
     93          __ramfunc void Usart1_c_irq_handler(void)
   \                     Usart1_c_irq_handler:
   \   00000000                      REQUIRE ?Subroutine4
   \   00000000                      ;; // Fall through to label ?Subroutine4
     94          {
     95          	AT91PS_USART USART_pt = AT91C_BASE_US0;
     96          	unsigned int status;
     97          	//* get Usart status register
     98          	status = USART_pt->US_CSR;
     99          	if ( status & AT91C_US_RXRDY){
    100          		//* Get byte and send
    101          		AT91F_US_PutChar (USART_pt, AT91F_US_GetChar(USART_pt));
    102          	}
    103          
    104          	if ( status & AT91C_US_OVRE) {
    105          		//* clear US_RXRDY
    106          		 AT91F_US_GetChar(USART_pt);
    107          		 AT91F_US_PutChar (USART_pt, 'O');
    108          	}
    109          
    110          	//* Check error
    111          	if ( status & AT91C_US_PARE) {
    112          		 AT91F_US_PutChar (USART_pt, 'P');
    113          	}
    114          
    115          	if ( status & AT91C_US_FRAME) {
    116          		 AT91F_US_PutChar (USART_pt, 'F');
    117          	}
    118          
    119          	if ( status & AT91C_US_TIMEOUT){
    120          		USART_pt->US_CR = AT91C_US_STTTO;
    121          		 AT91F_US_PutChar (USART_pt, 'T');
    122          	}
    123          
    124          	//* Reset the satus bit
    125          	 USART_pt->US_CR = AT91C_US_RSTSTA;
    126          }
    127          //*-------------------------- External Function -------------------------------
    128          
    129          //*----------------------------------------------------------------------------
    130          //* Function Name       : Usart_init
    131          //* Object              : USART initialization
    132          //* Input Parameters    : none
    133          //* Output Parameters   : TRUE
    134          //*----------------------------------------------------------------------------

   \                                 In segment CODE, align 4, keep-with-next
    135          void Usart_init ( void )
    136          //* Begin
    137          {
   \                     Usart_init:
   \   00000000   30B5               PUSH        {R4,R5,LR}
    138          	AT91PS_USART COM0 = AT91C_BASE_US0;
    139          
    140             	// First, enable the clock of the USART
    141              	AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_US0 ) ;
   \   00000002   4024               MOV         R4,#+0x40
   \   00000004   ....               LDR         R0,??DataTable7    ;; 0xfffffc10
   \   00000006   0460               STR         R4,[R0, #+0]
    142          
    143                  //* Configure PIO controllers to periph mode
    144           	AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA,
    145           		((unsigned int) AT91C_PA0_RXD0    ) |
    146           		((unsigned int) AT91C_PA1_TXD0    ) |
    147           		((unsigned int) AT91C_PA3_RTS0    ) |
    148           		((unsigned int) AT91C_PA4_CTS0    ), // Peripheral A
    149           		0); // Peripheral B
   \   00000008   1B20               MOV         R0,#+0x1B
   \   0000000A   ....               LDR         R1,??DataTable8    ;; 0xfffff470
   \   0000000C   0860               STR         R0,[R1, #+0]
   \   0000000E   ....               LDR         R1,??DataTable9    ;; 0xfffff474
   \   00000010   0022               MOV         R2,#+0
   \   00000012   0A60               STR         R2,[R1, #+0]
   \   00000014   ....               LDR         R1,??DataTable10   ;; 0xfffff404
   \   00000016   0860               STR         R0,[R1, #+0]

⌨️ 快捷键说明

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