?? main.lst
字號:
83 TRACE_DEBUG_H("=> CAN1 WAKEUP ");
84 }
85
86 }
\ ??AT91F_CAN1_Handler_8:
\ 000000A0 01B0 ADD SP,#+0x4
\ 000000A2 70BC POP {R4-R6}
\ 000000A4 01BC POP {R0}
\ 000000A6 0047 BX R0 ;; return
\ ??AT91F_CAN1_Handler_0:
\ 000000A8 0042F8FF DC32 0xfff84200
\ 000000AC ........ DC32 `?<Constant "\\r\\n">`
\ 000000B0 ........ DC32 `?<Constant "\\r\\n*******************...">`
\ 000000B4 1C42F8FF DC32 0xfff8421c
\ 000000B8 ........ DC32 testCAN1
87
88 //*--------------------------------------------------------------------------------------
89 //* Function Name : Main
90 //* Object : Software entry point
91 //*--------------------------------------------------------------------------------------
\ In segment CODE, align 4, keep-with-next
92 void main()
93 {
\ main:
\ 00000000 00B5 PUSH {LR}
94 ////////////////////////////////////////////////////////////////////////////////////////////////////
95 // DBGU Init
96 /////////////////////////////////////////////////////////////////////////////////////////////////////
97
98 // Enable DBGU Clock
99 //AT91F_DBGU_CfgPMC(); // DBGU is always clocked
100 // Open PIO for DBGU
101 AT91F_DBGU_CfgPIO();
\ 00000002 ........ _BLF AT91F_DBGU_CfgPIO,AT91F_DBGU_CfgPIO??rT
102 AT91F_US_Configure ((AT91PS_USART) AT91C_BASE_DBGU,
103 AT91C_MASTER_CLOCK,
104 AT91C_US_ASYNC_MODE, // mode Register to be programmed
105 AT91C_BAUDRATE_115200, // baudrate to be programmed
106 0); // timeguard to be programmed
\ 00000006 0020 MOV R0,#+0
\ 00000008 01B4 PUSH {R0}
\ 0000000A E123 MOV R3,#+0xE1
\ 0000000C 5B02 LSL R3,R3,#+0x9 ;; #+0x1C200
\ 0000000E 8C22 MOV R2,#+0x8C
\ 00000010 1201 LSL R2,R2,#+0x4 ;; #+0x8C0
\ 00000012 3449 LDR R1,??main_0 ;; 0x2dc6c00
\ 00000014 3448 LDR R0,??main_0+0x4 ;; 0xfffff200
\ 00000016 ........ _BLF AT91F_US_Configure,AT91F_US_Configure??rT
\ 0000001A 01B0 ADD SP,#+0x4
107 // Enable Transmitter
108 AT91F_US_EnableTx((AT91PS_USART) AT91C_BASE_DBGU);
\ 0000001C 3248 LDR R0,??main_0+0x4 ;; 0xfffff200
\ 0000001E ........ _BLF AT91F_US_EnableTx,AT91F_US_EnableTx??rT
109
110 TRACE_INFO("\n\n\r======================================\n\r");
\ 00000022 .... LDR R0,??DataTable26 ;; _Stdout
\ 00000024 0028 CMP R0,#+0
\ 00000026 03D0 BEQ ??main_1
\ 00000028 3049 LDR R1,??main_0+0x8 ;; `?<Constant "\\n\\n\\r==================...">`
\ 0000002A .... LDR R0,??DataTable26 ;; _Stdout
\ 0000002C ........ _BLF fprintf,fprintf??rT
111 TRACE_INFO("AT91SAM7A3 Basic CAN Test\n\r");
\ ??main_1:
\ 00000030 .... LDR R0,??DataTable26 ;; _Stdout
\ 00000032 0028 CMP R0,#+0
\ 00000034 03D0 BEQ ??main_2
\ 00000036 2E49 LDR R1,??main_0+0xC ;; `?<Constant "AT91SAM7A3 Basic CAN ...">`
\ 00000038 .... LDR R0,??DataTable26 ;; _Stdout
\ 0000003A ........ _BLF fprintf,fprintf??rT
112 TRACE_INFO("======================================\n\r");
\ ??main_2:
\ 0000003E .... LDR R0,??DataTable26 ;; _Stdout
\ 00000040 0028 CMP R0,#+0
\ 00000042 03D0 BEQ ??main_3
\ 00000044 2B49 LDR R1,??main_0+0x10 ;; `?<Constant "=====================...">`
\ 00000046 .... LDR R0,??DataTable26 ;; _Stdout
\ 00000048 ........ _BLF fprintf,fprintf??rT
113
114 ///////////////////////////////////////////////////////////////////////////////////////////
115 // Init CAN0 and CAN1
116 ///////////////////////////////////////////////////////////////////////////////////////////
117
118 // Enable CAN0 and CAN1 PIOs
119 AT91F_CAN0_CfgPIO();
\ ??main_3:
\ 0000004C ........ _BLF AT91F_CAN0_CfgPIO,AT91F_CAN0_CfgPIO??rT
120 AT91F_CAN1_CfgPIO();
\ 00000050 ........ _BLF AT91F_CAN1_CfgPIO,AT91F_CAN1_CfgPIO??rT
121 // Enable CAN0 and CAN1 Clocks
122 AT91F_CAN0_CfgPMC();
\ 00000054 ........ _BLF AT91F_CAN0_CfgPMC,AT91F_CAN0_CfgPMC??rT
123 AT91F_CAN1_CfgPMC();
\ 00000058 ........ _BLF AT91F_CAN1_CfgPMC,AT91F_CAN1_CfgPMC??rT
124
125 // Enable CANs Transceivers
126 AT91F_PIOA_CfgPMC();
\ 0000005C ........ _BLF AT91F_PIOA_CfgPMC,AT91F_PIOA_CfgPMC??rT
127 AT91F_PIO_CfgOutput(AT91C_BASE_PIOA,AT91B_CAN_TRANSCEIVER_RS) ;
\ 00000060 8021 MOV R1,#+0x80
\ 00000062 0904 LSL R1,R1,#+0x10 ;; #+0x800000
\ 00000064 2448 LDR R0,??main_0+0x14 ;; 0xfffff400
\ 00000066 ........ _BLF AT91F_PIO_CfgOutput,AT91F_PIO_CfgOutput??rT
128 // Clear PA23 <=> Enable Transceiver Normal Mode (versus Standby mode)
129 AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,AT91B_CAN_TRANSCEIVER_RS) ;
\ 0000006A 8021 MOV R1,#+0x80
\ 0000006C 0904 LSL R1,R1,#+0x10 ;; #+0x800000
\ 0000006E 2248 LDR R0,??main_0+0x14 ;; 0xfffff400
\ 00000070 ........ _BLF AT91F_PIO_ClearOutput,AT91F_PIO_ClearOutput??rT
130
131 // Init CAN0 Interrupt Source Level
132 AT91F_AIC_ConfigureIt(AT91C_BASE_AIC, // CAN0 base address
133 AT91C_ID_CAN0, // CAN0 ID
134 AT91C_AIC_PRIOR_HIGHEST, // Max priority
135 AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, // Level sensitive
136 AT91F_CAN0_Handler); // C Handler
\ 00000074 2148 LDR R0,??main_0+0x18 ;; AT91F_CAN0_Handler
\ 00000076 01B4 PUSH {R0}
\ 00000078 0023 MOV R3,#+0
\ 0000007A 0722 MOV R2,#+0x7
\ 0000007C 0421 MOV R1,#+0x4
\ 0000007E 2048 LDR R0,??main_0+0x1C ;; 0xfffff000
\ 00000080 ........ _BLF AT91F_AIC_ConfigureIt,AT91F_AIC_ConfigureIt??rT
\ 00000084 01B0 ADD SP,#+0x4
137
138 AT91F_AIC_EnableIt(AT91C_BASE_AIC,AT91C_ID_CAN0);
\ 00000086 0421 MOV R1,#+0x4
\ 00000088 1D48 LDR R0,??main_0+0x1C ;; 0xfffff000
\ 0000008A ........ _BLF AT91F_AIC_EnableIt,AT91F_AIC_EnableIt??rT
139
140 // Init CAN1 Interrupt Source Level
141 AT91F_AIC_ConfigureIt(AT91C_BASE_AIC, // CAN1 base address
142 AT91C_ID_CAN1, // CAN1 ID
143 AT91C_AIC_PRIOR_HIGHEST, // Max priority
144 AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, // Level sensitive
145 AT91F_CAN1_Handler); // C Handler
\ 0000008E 1D48 LDR R0,??main_0+0x20 ;; AT91F_CAN1_Handler
\ 00000090 01B4 PUSH {R0}
\ 00000092 0023 MOV R3,#+0
\ 00000094 0722 MOV R2,#+0x7
\ 00000096 0521 MOV R1,#+0x5
\ 00000098 1948 LDR R0,??main_0+0x1C ;; 0xfffff000
\ 0000009A ........ _BLF AT91F_AIC_ConfigureIt,AT91F_AIC_ConfigureIt??rT
\ 0000009E 01B0 ADD SP,#+0x4
146
147 AT91F_AIC_EnableIt(AT91C_BASE_AIC,AT91C_ID_CAN1); //AIC中斷允許
\ 000000A0 0521 MOV R1,#+0x5
\ 000000A2 1748 LDR R0,??main_0+0x1C ;; 0xfffff000
\ 000000A4 ........ _BLF AT91F_AIC_EnableIt,AT91F_AIC_EnableIt??rT
148
149 // Cfg CAN Baudrate to 1Mbit/s => BRP = 5
150 // We choose 8 Time Quanta (tCSC = 125ns): 8tCSC = tSYNC + tPRS + tPHS1 + tPHS2
151 // Cfg PHASE1 PHASE2 PROPAG and SYNC segment
152 // Delay of busdriver + delay of receiver circuit = 200ns
153 // Delay of bus line considered negligible = 0ns
154 // tPRS = 2*(200+0) = 400ns < 4tCSC => PROPAG = 3
155 // tSYNC = 1tCSC => 8tCSC = 1tCSC + 4tCSC + tPHS1 + tPHS2
156 // tPHS1 + tPHS2 = 3tCSC => Phase Segment 2 = Max(IPT=2TQ,Phase Segment 1) = 2TQ => PHASE2 = 2-1 = 1 => PHASE1 = 0
157 // tSJW = Min(4 TQ, Phase Segment 1) = 1TQ => SJW = 1-1 = 0
158 AT91F_CAN_CfgBaudrateReg(AT91C_BASE_CAN0,0x00ff3066); //config 1D3066= 100K,相互通訊的兩個CAN的撥特率必須相同
\ 000000A8 1749 LDR R1,??main_0+0x24 ;; 0xff3066
\ 000000AA .... LDR R0,??DataTable27 ;; 0xfff80000
\ 000000AC ........ _BLF AT91F_CAN_CfgBaudrateReg,AT91F_CAN_CfgBaudrateReg??rT
159 AT91F_CAN_CfgBaudrateReg(AT91C_BASE_CAN1,0x00ff3066); //0x007c3066=24k 。1M 時,BR=0x00023544 ;
\ 000000B0 1549 LDR R1,??main_0+0x24 ;; 0xff3066
\ 000000B2 .... LDR R0,??DataTable28 ;; 0xfff84000
\ 000000B4 ........ _BLF AT91F_CAN_CfgBaudrateReg,AT91F_CAN_CfgBaudrateReg??rT
160
161 ///////////////////////////////////////////////////////////////////////////////////////////
162 // Enter Main Application
163 ///////////////////////////////////////////////////////////////////////////////////////////
164
165 AT91F_BasicTestSuite(); //進行一次測試
\ 000000B8 ........ _BLF AT91F_BasicTestSuite,AT91F_BasicTestSuite??rT
166
167 for(;;)
168 {
169 /**以100K的速率由 CAN0->Mailbox0 向 Can1->Mailbox0 發送數據**/
170
171 /* for(int n=0;n<=32767;) //減慢發送速度,以使超級終端顯示的數據讓人眼睛看起來不閃爍
172 for(int i=0;i<=30000;i++)
173 for(int j=0;j<=100;j++)
174 n++ ;
175 */
176 static int datas=1 ;
177 if(datas>=32767)
\ ??main_4:
\ 000000BC 1348 LDR R0,??main_0+0x28 ;; ??datas
\ 000000BE 0068 LDR R0,[R0, #+0]
\ 000000C0 1349 LDR R1,??main_0+0x2C ;; 0x7fff
\ 000000C2 8842 CMP R0,R1
\ 000000C4 02DB BLT ??main_5
178 datas=1 ;
\ 000000C6 1148 LDR R0,??main_0+0x28 ;; ??datas
\ 000000C8 0121 MOV R1,#+0x1
\ 000000CA 0160 STR R1,[R0, #+0]
179 CanSendData((unsigned)(0x100),(unsigned)datas++) ;
\ ??main_5:
\ 000000CC 0F48 LDR R0,??main_0+0x28 ;; ??datas
\ 000000CE 0168 LDR R1,[R0, #+0]
\ 000000D0 0E4A LDR R2,??main_0+0x28 ;; ??datas
\ 000000D2 081C MOV R0,R1
\ 000000D4 401C ADD R0,#+0x1
\ 000000D6 1060 STR R0,[R2, #+0]
\ 000000D8 8020 MOV R0,#+0x80
\ 000000DA 4000 LSL R0,R0,#+0x1 ;; #+0x100
\ 000000DC ........ _BLF CanSendData,CanSendData??rT
\ 000000E0 ECE7 B ??main_4
\ 000000E2 C046 NOP
\ ??main_0:
\ 000000E4 006CDC02 DC32 0x2dc6c00
\ 000000E8 00F2FFFF DC32 0xfffff200
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -