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

📄 interrupt_usart.lst

📁 AT91SAM7X256芯片底层驱动源码。在IAR430环境下编译
💻 LST
📖 第 1 页 / 共 2 页
字号:
##############################################################################
#                                                                            #
# IAR ARM ANSI C/C++ Compiler V4.30A/W32 KICKSTART     28/Oct/2005  11:13:58 #
# Copyright 1999-2005 IAR Systems. All rights reserved.                      #
#                                                                            #
#    Cpu mode        =  interwork                                            #
#    Endian          =  little                                               #
#    Stack alignment =  4                                                    #
#    Source file     =  E:\SAM7X\AT91_SAM7X256-IAR\AT91SAM7X256-Interrupt-IA #
#                       R4_30A-1_2\AT91SAM7X-Interrupt\src\interrupt_Usart.c #
#    Command line    =  E:\SAM7X\AT91_SAM7X256-IAR\AT91SAM7X256-Interrupt-IA #
#                       R4_30A-1_2\AT91SAM7X-Interrupt\src\interrupt_Usart.c #
#                        -lC E:\SAM7X\AT91_SAM7X256-IAR\AT91SAM7X256-Interru #
#                       pt-IAR4_30A-1_2\AT91SAM7X-Interrupt\compil\FLASH_Deb #
#                       ug\List\ -o E:\SAM7X\AT91_SAM7X256-IAR\AT91SAM7X256- #
#                       Interrupt-IAR4_30A-1_2\AT91SAM7X-Interrupt\compil\FL #
#                       ASH_Debug\Obj\ -z9 --debug --cpu_mode thumb          #
#                       --endian little --cpu ARM7TDMI --stack_align 4       #
#                       --interwork -e --fpu None --dlib_config "D:\Program  #
#                       Files\IAR Systems\Embedded Workbench 4.0             #
#                       Kickstart\arm\LIB\dl4tptinl8n.h" -I                  #
#                       E:\SAM7X\AT91_SAM7X256-IAR\AT91SAM7X256-Interrupt-IA #
#                       R4_30A-1_2\AT91SAM7X-Interrupt\compil\srcIAR\ -I     #
#                       E:\SAM7X\AT91_SAM7X256-IAR\AT91SAM7X256-Interrupt-IA #
#                       R4_30A-1_2\AT91SAM7X-Interrupt\compil\..\src\ -I     #
#                       E:\SAM7X\AT91_SAM7X256-IAR\AT91SAM7X256-Interrupt-IA #
#                       R4_30A-1_2\AT91SAM7X-Interrupt\compil\..\..\ -I      #
#                       "D:\Program Files\IAR Systems\Embedded Workbench     #
#                       4.0 Kickstart\arm\INC\"                              #
#    List file       =  E:\SAM7X\AT91_SAM7X256-IAR\AT91SAM7X256-Interrupt-IA #
#                       R4_30A-1_2\AT91SAM7X-Interrupt\compil\FLASH_Debug\Li #
#                       st\interrupt_Usart.lst                               #
#    Object file     =  E:\SAM7X\AT91_SAM7X256-IAR\AT91SAM7X256-Interrupt-IA #
#                       R4_30A-1_2\AT91SAM7X-Interrupt\compil\FLASH_Debug\Ob #
#                       j\interrupt_Usart.r79                                #
#                                                                            #
#                                                                            #
##############################################################################

E:\SAM7X\AT91_SAM7X256-IAR\AT91SAM7X256-Interrupt-IAR4_30A-1_2\AT91SAM7X-Interrupt\src\interrupt_Usart.c
      1          // ----------------------------------------------------------------------------
      2          //         ATMEL Microcontroller Software Support  -  ROUSSET  -
      3          // ----------------------------------------------------------------------------
      4          // DISCLAIMER:  THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
      5          // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
      6          // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
      7          // DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
      8          // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
      9          // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
     10          // OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
     11          // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
     12          // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
     13          // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     14          // ----------------------------------------------------------------------------
     15          // File Name           : interrupt_Usart.c
     16          // Object              : USART Interrupt Management
     17          // Creation            : JPP   08-Sep-2005
     18          // ----------------------------------------------------------------------------
     19          
     20          // Include Standard LIB  files
     21          #include "project.h"

   \                                 In segment CODE, align 4, keep-with-next
   \   __??Code16?? __code __interwork __atpcs void AT91F_PDC_Open(AT91PS_PDC)
   \                     AT91F_PDC_Open:
   \   00000000   0221               MOV         R1,#+0x2
   \   00000002   0162               STR         R1,[R0, #+0x20]
   \   00000004   0902               LSL         R1,R1,#+0x8
   \   00000006   0162               STR         R1,[R0, #+0x20]
   \   00000008   0021               MOV         R1,#+0
   \   0000000A   8161               STR         R1,[R0, #+0x18]
   \   0000000C   C161               STR         R1,[R0, #+0x1C]
   \   0000000E   0161               STR         R1,[R0, #+0x10]
   \   00000010   4161               STR         R1,[R0, #+0x14]
   \   00000012   8160               STR         R1,[R0, #+0x8]
   \   00000014   C160               STR         R1,[R0, #+0xC]
   \   00000016   0160               STR         R1,[R0, #+0]
   \   00000018   4160               STR         R1,[R0, #+0x4]
   \   0000001A   0121               MOV         R1,#+0x1
   \   0000001C   0162               STR         R1,[R0, #+0x20]
   \   0000001E   0902               LSL         R1,R1,#+0x8
   \   00000020   0162               STR         R1,[R0, #+0x20]
   \   00000022   7047               BX          LR                 ;; return
     22          
     23          #define USART_INTERRUPT_LEVEL		7
     24          #define AT91_BAUD_RATE			115200

   \                                 In segment DATA_C, align 4, align-sorted
     25          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   617274204952       DC8 61H, 72H, 74H, 20H, 49H, 52H, 51H, 20H
   \              5120        
   \   00000018   2A2A2A0A0D43       DC8 2AH, 2AH, 2AH, 0AH, 0DH, 43H, 6FH, 70H
   \              6F70        
   \   00000020   797269676874       DC8 79H, 72H, 69H, 67H, 68H, 74H, 20H, 28H
   \              2028        
   \   00000028   432920323030       DC8 43H, 29H, 20H, 32H, 30H, 30H, 35H, 20H
   \              3520        
   \   00000030   41544D454C20       DC8 41H, 54H, 4DH, 45H, 4CH, 20H, 43H, 6FH
   \              436F        
   \   00000038   72706F726174       DC8 72H, 70H, 6FH, 72H, 61H, 74H, 69H, 6FH
   \              696F        
   \   00000040   6E7320566572       DC8 6EH, 73H, 20H, 56H, 65H, 72H, 73H, 69H
   \              7369        
   \   00000048   6F6E3A20312E       DC8 6FH, 6EH, 3AH, 20H, 31H, 2EH, 30H, 0AH
   \              300A        
   \   00000050   0D00               DC8 0DH, 0
   \   00000052   0000               DC8 0, 0
     26          {
     27          "\n\r  *** ATMEL Usart IRQ ***\n\r"
     28          "Copyright (C) 2005 ATMEL Corporations Version: 1.0\n\r"
     29          };
     30          
     31          //* \fn    AT91F_US_Baudrate
     32          //* \brief Calculate the baudrate
     33          //* Standard Asynchronous Mode : 8 bits , 1 stop , no parity
     34          #define AT91C_US_ASYNC_MODE ( AT91C_US_USMODE_NORMAL + \
     35                                  AT91C_US_NBSTOP_1_BIT + \
     36                                  AT91C_US_PAR_NONE + \
     37                                  AT91C_US_CHRL_8_BITS + \
     38                                  AT91C_US_CLKS_CLOCK )
     39          
     40          //*------------------------- Internal Function --------------------------------
     41          
     42          //*----------------------------------------------------------------------------
     43          //* Function Name       : Usart_c_irq_handler
     44          //* Object              : C handler interrupt function calAT91B_LED by the interrupts
     45          //*                       assembling routine
     46          //* Input Parameters    : <RTC_pt> time rtc descriptor
     47          //* Output Parameters   : increment count_timer0_interrupt
     48          //*----------------------------------------------------------------------------

   \                                 In segment CODE_I, align 4, keep-with-next
     49          __ramfunc void Usart_c_irq_handler(void)
     50          {
   \                     Usart_c_irq_handler:
   \   00000000   10B4               PUSH        {R4}
     51          	AT91PS_USART USART_pt = AT91C_BASE_US0;
     52          	unsigned int status;
     53          	//* get Usart status register
     54          	status = USART_pt->US_CSR;
   \   00000002   1248               LDR         R0,??Usart_c_irq_handler_0  ;; 0xfffc0014
   \   00000004   0068               LDR         R0,[R0, #+0]
     55          	if ( status & AT91C_US_RXRDY){
   \   00000006   1249               LDR         R1,??Usart_c_irq_handler_0+0x4  ;; 0xfffc001c
   \   00000008   124A               LDR         R2,??Usart_c_irq_handler_0+0x8  ;; 0xfffc0018
   \   0000000A   C307               LSL         R3,R0,#+0x1F
   \   0000000C   04D5               BPL         ??Usart_c_irq_handler_1
     56          		//* Get byte and send
     57          		AT91F_US_PutChar (USART_pt, AT91F_US_GetChar(USART_pt));
   \   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]
     58          	}
     59          
     60          	if ( status & AT91C_US_OVRE) {
   \                     ??Usart_c_irq_handler_1:
   \   00000018   8306               LSL         R3,R0,#+0x1A
   \   0000001A   02D5               BPL         ??Usart_c_irq_handler_2
     61          		//* clear US_RXRDY
     62          		 AT91F_US_GetChar(USART_pt);
   \   0000001C   1268               LDR         R2,[R2, #+0]
     63          		 AT91F_US_PutChar (USART_pt, 'O');
   \   0000001E   4F22               MOV         R2,#+0x4F
   \   00000020   0A60               STR         R2,[R1, #+0]
     64          	}
     65          
     66          	//* Check error
     67          	if ( status & AT91C_US_PARE) {
   \                     ??Usart_c_irq_handler_2:
   \   00000022   0206               LSL         R2,R0,#+0x18
   \   00000024   01D5               BPL         ??Usart_c_irq_handler_3
     68          		 AT91F_US_PutChar (USART_pt, 'P');
   \   00000026   5022               MOV         R2,#+0x50
   \   00000028   0A60               STR         R2,[R1, #+0]
     69          	}
     70          
     71          	if ( status & AT91C_US_FRAME) {
   \                     ??Usart_c_irq_handler_3:
   \   0000002A   4206               LSL         R2,R0,#+0x19
   \   0000002C   01D5               BPL         ??Usart_c_irq_handler_4
     72          		 AT91F_US_PutChar (USART_pt, 'F');
   \   0000002E   4622               MOV         R2,#+0x46
   \   00000030   0A60               STR         R2,[R1, #+0]
     73          	}
     74          
     75          	if ( status & AT91C_US_TIMEOUT){
   \                     ??Usart_c_irq_handler_4:
   \   00000032   8022               MOV         R2,#+0x80
   \   00000034   5200               LSL         R2,R2,#+0x1        ;; #+0x100
   \   00000036   084B               LDR         R3,??Usart_c_irq_handler_0+0xC  ;; 0xfffc0000
   \   00000038   1042               TST         R0,R2
   \   0000003A   03D0               BEQ         ??Usart_c_irq_handler_5

⌨️ 快捷键说明

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