📄 interrupt_usart.lst
字号:
76 USART_pt->US_CR = AT91C_US_STTTO;
\ 0000003C D000 LSL R0,R2,#+0x3
\ 0000003E 1860 STR R0,[R3, #+0]
77 AT91F_US_PutChar (USART_pt, 'T');
\ 00000040 5420 MOV R0,#+0x54
\ 00000042 0860 STR R0,[R1, #+0]
78 }
79
80 //* Reset the satus bit
81 USART_pt->US_CR = AT91C_US_RSTSTA;
\ ??Usart_c_irq_handler_5:
\ 00000044 1A60 STR R2,[R3, #+0]
82 }
\ 00000046 10BC POP {R4}
\ 00000048 7047 BX LR ;; return
\ 0000004A C046 NOP
\ ??Usart_c_irq_handler_0:
\ 0000004C 1400FCFF DC32 0xfffc0014
\ 00000050 1C00FCFF DC32 0xfffc001c
\ 00000054 1800FCFF DC32 0xfffc0018
\ 00000058 0000FCFF DC32 0xfffc0000
83 //*-------------------------- External Function -------------------------------
84
85 //*----------------------------------------------------------------------------
86 //* Function Name : Usart_init
87 //* Object : USART initialization
88 //* Input Parameters : none
89 //* Output Parameters : TRUE
90 //*----------------------------------------------------------------------------
\ In segment CODE, align 4, keep-with-next
91 void Usart_init ( void )
92 //* Begin
93 {
\ Usart_init:
\ 00000000 71B5 PUSH {R0,R4-R6,LR}
94 AT91PS_USART COM0 = AT91C_BASE_US0;
95
96 //* Configure PIO controllers to periph mode
97 AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA,
98 ((unsigned int) AT91C_PA0_RXD0 ) |
99 ((unsigned int) AT91C_PA1_TXD0 ) |
100 ((unsigned int) AT91C_PA3_RTS0 ) |
101 ((unsigned int) AT91C_PA4_CTS0 ), // Peripheral A
102 0); // Peripheral B
\ 00000002 1B20 MOV R0,#+0x1B
\ 00000004 2449 LDR R1,??Usart_init_0 ;; 0xfffff470
\ 00000006 0860 STR R0,[R1, #+0]
\ 00000008 0024 MOV R4,#+0
\ 0000000A 2449 LDR R1,??Usart_init_0+0x4 ;; 0xfffff474
\ 0000000C 0C60 STR R4,[R1, #+0]
\ 0000000E 2449 LDR R1,??Usart_init_0+0x8 ;; 0xfffff404
\ 00000010 0860 STR R0,[R1, #+0]
103
104 // First, enable the clock of the USART
105 AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_US0 ) ;
\ 00000012 4025 MOV R5,#+0x40
\ 00000014 2348 LDR R0,??Usart_init_0+0xC ;; 0xfffffc10
\ 00000016 0560 STR R5,[R0, #+0]
106 // Usart Configure
107 AT91F_US_Configure (COM0, AT91B_MCK, AT91C_US_ASYNC_MODE, AT91_BAUD_RATE, 0);
\ 00000018 2348 LDR R0,??Usart_init_0+0x10 ;; 0xfffc000c
\ 0000001A 0021 MOV R1,#+0
\ 0000001C C943 MVN R1,R1 ;; #-1
\ 0000001E 0160 STR R1,[R0, #+0]
\ 00000020 224E LDR R6,??Usart_init_0+0x14 ;; 0xfffc0000
\ 00000022 AC20 MOV R0,#+0xAC
\ 00000024 3060 STR R0,[R6, #+0]
\ 00000026 2248 LDR R0,??Usart_init_0+0x18 ;; 0xfffc0020
\ 00000028 1A21 MOV R1,#+0x1A
\ 0000002A 0160 STR R1,[R0, #+0]
\ 0000002C 2148 LDR R0,??Usart_init_0+0x1C ;; 0xfffc0028
\ 0000002E 0460 STR R4,[R0, #+0]
\ 00000030 2148 LDR R0,??Usart_init_0+0x20 ;; 0xfffc0100
\ 00000032 ........ _BLF AT91F_PDC_Open,AT91F_PDC_Open??rT
\ 00000036 2148 LDR R0,??Usart_init_0+0x24 ;; 0xfffc0004
\ 00000038 8C21 MOV R1,#+0x8C
\ 0000003A 0901 LSL R1,R1,#+0x4 ;; #+0x8C0
\ 0000003C 0160 STR R1,[R0, #+0]
108
109 // Enable usart
110 COM0->US_CR = AT91C_US_RXEN | AT91C_US_TXEN;
\ 0000003E 5020 MOV R0,#+0x50
\ 00000040 3060 STR R0,[R6, #+0]
111
112 //* Enable USART IT error and RXRDY
113 AT91F_US_EnableIt(COM0,AT91C_US_TIMEOUT | AT91C_US_FRAME | AT91C_US_OVRE |AT91C_US_RXRDY);
\ 00000042 1F48 LDR R0,??Usart_init_0+0x28 ;; 0xfffc0008
\ 00000044 FF21 MOV R1,#+0xFF
\ 00000046 6231 ADD R1,#+0x62 ;; #+0x161
\ 00000048 0160 STR R1,[R0, #+0]
114
115 //* open Usart 1 interrupt
116 AT91F_AIC_ConfigureIt ( AT91C_BASE_AIC, AT91C_ID_US0, USART_INTERRUPT_LEVEL,AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, Usart_c_irq_handler);
\ 0000004A 1E48 LDR R0,??Usart_init_0+0x2C ;; 0xfffff098
\ 0000004C 0168 LDR R1,[R0, #+0]
\ 0000004E 1E49 LDR R1,??Usart_init_0+0x30 ;; 0xfffff124
\ 00000050 0D60 STR R5,[R1, #+0]
\ 00000052 1E49 LDR R1,??Usart_init_0+0x34 ;; Usart_c_irq_handler
\ 00000054 0160 STR R1,[R0, #+0]
\ 00000056 1E48 LDR R0,??Usart_init_0+0x38 ;; 0xfffff018
\ 00000058 0721 MOV R1,#+0x7
\ 0000005A 0160 STR R1,[R0, #+0]
\ 0000005C 1D48 LDR R0,??Usart_init_0+0x3C ;; 0xfffff128
\ 0000005E 0560 STR R5,[R0, #+0]
117 AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_US0);
\ 00000060 1D48 LDR R0,??Usart_init_0+0x40 ;; 0xfffff120
\ 00000062 0560 STR R5,[R0, #+0]
118
119 AT91F_US_PutChar (COM0,'X');
\ 00000064 1D48 LDR R0,??Usart_init_0+0x44 ;; 0xfffc001c
\ 00000066 5821 MOV R1,#+0x58
\ 00000068 0160 STR R1,[R0, #+0]
120
121 AT91F_US_SendFrame(COM0,(char *)atmel_header,sizeof(atmel_header),0,0);
\ 0000006A 1D48 LDR R0,??Usart_init_0+0x48 ;; ??atmel_header
\ 0000006C 5221 MOV R1,#+0x52
\ 0000006E 1D4A LDR R2,??Usart_init_0+0x4C ;; 0xfffc0118
\ 00000070 1D4B LDR R3,??Usart_init_0+0x50 ;; 0xfffc011c
\ 00000072 1E4D LDR R5,??Usart_init_0+0x54 ;; 0xfffc010c
\ 00000074 2E68 LDR R6,[R5, #+0]
\ 00000076 002E CMP R6,#+0
\ 00000078 05D1 BNE ??Usart_init_1
\ 0000007A 1D4E LDR R6,??Usart_init_0+0x58 ;; 0xfffc0108
\ 0000007C 3060 STR R0,[R6, #+0]
\ 0000007E 2960 STR R1,[R5, #+0]
\ 00000080 1460 STR R4,[R2, #+0]
\ 00000082 1C60 STR R4,[R3, #+0]
\ 00000084 04E0 B ??Usart_init_2
\ ??Usart_init_1:
\ 00000086 1C68 LDR R4,[R3, #+0]
\ 00000088 002C CMP R4,#+0
\ 0000008A 01D1 BNE ??Usart_init_2
\ 0000008C 1060 STR R0,[R2, #+0]
\ 0000008E 1960 STR R1,[R3, #+0]
122
123 //* End
124 }
\ ??Usart_init_2:
\ 00000090 78BC POP {R3-R6}
\ 00000092 01BC POP {R0}
\ 00000094 0047 BX R0 ;; return
\ 00000096 C046 NOP
\ ??Usart_init_0:
\ 00000098 70F4FFFF DC32 0xfffff470
\ 0000009C 74F4FFFF DC32 0xfffff474
\ 000000A0 04F4FFFF DC32 0xfffff404
\ 000000A4 10FCFFFF DC32 0xfffffc10
\ 000000A8 0C00FCFF DC32 0xfffc000c
\ 000000AC 0000FCFF DC32 0xfffc0000
\ 000000B0 2000FCFF DC32 0xfffc0020
\ 000000B4 2800FCFF DC32 0xfffc0028
\ 000000B8 0001FCFF DC32 0xfffc0100
\ 000000BC 0400FCFF DC32 0xfffc0004
\ 000000C0 0800FCFF DC32 0xfffc0008
\ 000000C4 98F0FFFF DC32 0xfffff098
\ 000000C8 24F1FFFF DC32 0xfffff124
\ 000000CC ........ DC32 Usart_c_irq_handler
\ 000000D0 18F0FFFF DC32 0xfffff018
\ 000000D4 28F1FFFF DC32 0xfffff128
\ 000000D8 20F1FFFF DC32 0xfffff120
\ 000000DC 1C00FCFF DC32 0xfffc001c
\ 000000E0 ........ DC32 ??atmel_header
\ 000000E4 1801FCFF DC32 0xfffc0118
\ 000000E8 1C01FCFF DC32 0xfffc011c
\ 000000EC 0C01FCFF DC32 0xfffc010c
\ 000000F0 0801FCFF DC32 0xfffc0108
Maximum stack usage in bytes:
Function CSTACK
-------- ------
AT91F_PDC_Open 0
Usart_c_irq_handler 4
Usart_init 20
Segment part sizes:
Function/Label Bytes
-------------- -----
AT91F_PDC_Open 36
atmel_header 84
Usart_c_irq_handler 92
Usart_init 244
Others 36
296 bytes in segment CODE
100 bytes in segment CODE_I
84 bytes in segment DATA_C
12 bytes in segment INITTAB
336 bytes of CODE memory (+ 72 bytes shared)
84 bytes of CONST memory
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -