📄 main.lst
字号:
\ 000000A6 .... LDR R0,??DataTable26 ;; _Stdout
\ 000000A8 0028 CMP R0,#+0
\ 000000AA 03D0 BEQ ??main_6
\ 000000AC 3749 LDR R1,??main_0+0x20 ;; `?<Constant "=====================...">`
\ 000000AE .... LDR R0,??DataTable26 ;; _Stdout
\ 000000B0 ........ _BLF fprintf,??fprintf??rT
161
162 ///////////////////////////////////////////////////////////////////////////////////////////
163 // Init CAN0 and CAN1
164 ///////////////////////////////////////////////////////////////////////////////////////////
165
166 // Enable CAN0 and CAN1 PIOs
167 AT91F_CAN0_CfgPIO();
\ ??main_6:
\ 000000B4 ........ _BLF AT91F_CAN0_CfgPIO,??AT91F_CAN0_CfgPIO??rT
168 AT91F_CAN1_CfgPIO();
\ 000000B8 ........ _BLF AT91F_CAN1_CfgPIO,??AT91F_CAN1_CfgPIO??rT
169 // Enable CAN0 and CAN1 Clocks
170 AT91F_CAN0_CfgPMC();
\ 000000BC ........ _BLF AT91F_CAN0_CfgPMC,??AT91F_CAN0_CfgPMC??rT
171 AT91F_CAN1_CfgPMC();
\ 000000C0 ........ _BLF AT91F_CAN1_CfgPMC,??AT91F_CAN1_CfgPMC??rT
172
173 // Enable CANs Transceivers
174 AT91F_PIOA_CfgPMC();
\ 000000C4 ........ _BLF AT91F_PIOA_CfgPMC,??AT91F_PIOA_CfgPMC??rT
175 AT91F_PIO_CfgOutput(AT91C_BASE_PIOA,AT91B_CAN_TRANSCEIVER_RS) ;
\ 000000C8 8021 MOVS R1,#+128
\ 000000CA 0904 LSLS R1,R1,#+16 ;; #+8388608
\ 000000CC 3048 LDR R0,??main_0+0x24 ;; 0xfffffffffffff400
\ 000000CE ........ _BLF AT91F_PIO_CfgOutput,??AT91F_PIO_CfgOutput??rT
176 // Clear PA23 <=> Enable Transceiver Normal Mode (versus Standby mode)
177 AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,AT91B_CAN_TRANSCEIVER_RS) ;
\ 000000D2 8021 MOVS R1,#+128
\ 000000D4 0904 LSLS R1,R1,#+16 ;; #+8388608
\ 000000D6 2E48 LDR R0,??main_0+0x24 ;; 0xfffffffffffff400
\ 000000D8 ........ _BLF AT91F_PIO_ClearOutput,??AT91F_PIO_ClearOutput??rT
178
179 // Init CAN0 Interrupt Source Level
180 AT91F_AIC_ConfigureIt(AT91C_BASE_AIC, // CAN0 base address
181 AT91C_ID_CAN0, // CAN0 ID
182 AT91C_AIC_PRIOR_HIGHEST, // Max priority
183 AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, // Level sensitive
184 AT91F_CAN0_Handler); // C Handler
\ 000000DC 2D48 LDR R0,??main_0+0x28 ;; AT91F_CAN0_Handler
\ 000000DE 01B4 PUSH {R0}
\ 000000E0 0023 MOVS R3,#+0
\ 000000E2 0722 MOVS R2,#+7
\ 000000E4 0421 MOVS R1,#+4
\ 000000E6 2C48 LDR R0,??main_0+0x2C ;; 0xfffffffffffff000
\ 000000E8 ........ _BLF AT91F_AIC_ConfigureIt,??AT91F_AIC_ConfigureIt??rT
\ 000000EC 01B0 ADD SP,SP,#+4
185
186 AT91F_AIC_EnableIt(AT91C_BASE_AIC,AT91C_ID_CAN0);
\ 000000EE 0421 MOVS R1,#+4
\ 000000F0 2948 LDR R0,??main_0+0x2C ;; 0xfffffffffffff000
\ 000000F2 ........ _BLF AT91F_AIC_EnableIt,??AT91F_AIC_EnableIt??rT
187
188 // Init CAN1 Interrupt Source Level
189 AT91F_AIC_ConfigureIt(AT91C_BASE_AIC, // CAN1 base address
190 AT91C_ID_CAN1, // CAN1 ID
191 AT91C_AIC_PRIOR_HIGHEST, // Max priority
192 AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, // Level sensitive
193 AT91F_CAN1_Handler); // C Handler
\ 000000F6 2948 LDR R0,??main_0+0x30 ;; AT91F_CAN1_Handler
\ 000000F8 01B4 PUSH {R0}
\ 000000FA 0023 MOVS R3,#+0
\ 000000FC 0722 MOVS R2,#+7
\ 000000FE 0521 MOVS R1,#+5
\ 00000100 2548 LDR R0,??main_0+0x2C ;; 0xfffffffffffff000
\ 00000102 ........ _BLF AT91F_AIC_ConfigureIt,??AT91F_AIC_ConfigureIt??rT
\ 00000106 01B0 ADD SP,SP,#+4
194
195 AT91F_AIC_EnableIt(AT91C_BASE_AIC,AT91C_ID_CAN1); //AIC中断允许
\ 00000108 0521 MOVS R1,#+5
\ 0000010A 2348 LDR R0,??main_0+0x2C ;; 0xfffffffffffff000
\ 0000010C ........ _BLF AT91F_AIC_EnableIt,??AT91F_AIC_EnableIt??rT
196
197 // Cfg CAN Baudrate to 1Mbit/s => BRP = 5
198 // We choose 8 Time Quanta (tCSC = 125ns): 8tCSC = tSYNC + tPRS + tPHS1 + tPHS2
199 // Cfg PHASE1 PHASE2 PROPAG and SYNC segment
200 // Delay of busdriver + delay of receiver circuit = 200ns
201 // Delay of bus line considered negligible = 0ns
202 // tPRS = 2*(200+0) = 400ns < 4tCSC => PROPAG = 3
203 // tSYNC = 1tCSC => 8tCSC = 1tCSC + 4tCSC + tPHS1 + tPHS2
204 // tPHS1 + tPHS2 = 3tCSC => Phase Segment 2 = Max(IPT=2TQ,Phase Segment 1) = 2TQ => PHASE2 = 2-1 = 1 => PHASE1 = 0
205 // tSJW = Min(4 TQ, Phase Segment 1) = 1TQ => SJW = 1-1 = 0
206
207 //AT91F_CAN_CfgBaudrateReg(AT91C_BASE_CAN0,0x007c3066); //config 1D3066= 100K,相互通讯的两个CAN的拨特率必须相同
208 //AT91F_CAN_CfgBaudrateReg(AT91C_BASE_CAN1,0x007c3066); //0x007c3066=24k
209
210 AT91F_CAN_CfgBaudrateReg(AT91C_BASE_CAN0,0x004A3066); //当 MCK 变为12mHz时 ,10K=0x004A3066
\ 00000110 2349 LDR R1,??main_0+0x34 ;; 0x4a3066
\ 00000112 .... LDR R0,??DataTable27 ;; 0xfffffffffff80000
\ 00000114 ........ _BLF AT91F_CAN_CfgBaudrateReg,??AT91F_CAN_CfgBaudrateReg??rT
211 AT91F_CAN_CfgBaudrateReg(AT91C_BASE_CAN1,0x004A3066);
\ 00000118 2149 LDR R1,??main_0+0x34 ;; 0x4a3066
\ 0000011A .... LDR R0,??DataTable28 ;; 0xfffffffffff84000
\ 0000011C ........ _BLF AT91F_CAN_CfgBaudrateReg,??AT91F_CAN_CfgBaudrateReg??rT
212 //当频率变为 6MHz时候 ,5K =0x004A3066
213
214 ///////////////////////////////////////////////////////////////////////////////////////////
215 // Enter Main Application
216 ///////////////////////////////////////////////////////////////////////////////////////////
217
218 AT91F_BasicTestSuite(); //进行一次测试
\ 00000120 ........ _BLF AT91F_BasicTestSuite,??AT91F_BasicTestSuite??rT
219
220 for(;;)
221 {
222 /**以100K的速率由 CAN0->Mailbox0 向 Can1->Mailbox0 发送数据**/
223
224 for(int n=0;n<=32767;) //减慢发送速度,以使超级终端显示的数据让人眼睛看起来不闪烁
\ ??main_7:
\ 00000124 0020 MOVS R0,#+0
\ ??main_8:
\ 00000126 8021 MOVS R1,#+128
\ 00000128 0902 LSLS R1,R1,#+8 ;; #+32768
\ 0000012A 8842 CMP R0,R1
\ 0000012C 0BDA BGE ??main_9
225 for(int i=0;i<=30000;i++)
\ 0000012E 0021 MOVS R1,#+0
\ ??main_10:
\ 00000130 1C4A LDR R2,??main_0+0x38 ;; 0x7531
\ 00000132 9142 CMP R1,R2
\ 00000134 F7DA BGE ??main_8
226 for(int j=0;j<=12;j++)
\ 00000136 0022 MOVS R2,#+0
\ ??main_11:
\ 00000138 0D2A CMP R2,#+13
\ 0000013A 02DA BGE ??main_12
227 n++ ;
\ 0000013C 401C ADDS R0,R0,#+1
\ 0000013E 521C ADDS R2,R2,#+1
\ 00000140 FAE7 B ??main_11
\ ??main_12:
\ 00000142 491C ADDS R1,R1,#+1
\ 00000144 F4E7 B ??main_10
228
229 static int datas=1 ;
230 if(datas>=32767)
\ ??main_9:
\ 00000146 1848 LDR R0,??main_0+0x3C ;; ??datas
\ 00000148 0068 LDR R0,[R0, #+0]
\ 0000014A 1849 LDR R1,??main_0+0x40 ;; 0x7fff
\ 0000014C 8842 CMP R0,R1
\ 0000014E 02DB BLT ??main_13
231 datas=1 ;
\ 00000150 1548 LDR R0,??main_0+0x3C ;; ??datas
\ 00000152 0121 MOVS R1,#+1
\ 00000154 0160 STR R1,[R0, #+0]
232 CanSendData((unsigned)(0x100),(unsigned)datas++) ;
\ ??main_13:
\ 00000156 1448 LDR R0,??main_0+0x3C ;; ??datas
\ 00000158 0168 LDR R1,[R0, #+0]
\ 0000015A 134A LDR R2,??main_0+0x3C ;; ??datas
\ 0000015C 0800 MOVS R0,R1
\ 0000015E 401C ADDS R0,R0,#+1
\ 00000160 1060 STR R0,[R2, #+0]
\ 00000162 8020 MOVS R0,#+128
\ 00000164 4000 LSLS R0,R0,#+1 ;; #+256
\ 00000166 ........ _BLF CanSendData,??CanSendData??rT
\ 0000016A DBE7 B ??main_7
\ ??main_0:
\ 0000016C 20FCFFFF DC32 0xfffffffffffffc20
\ 00000170 01070000 DC32 0x701
\ 00000174 24FCFFFF DC32 0xfffffffffffffc24
\ 00000178 30FCFFFF DC32 0xfffffffffffffc30
\ 0000017C 001BB700 DC32 0xb71b00
\ 00000180 00F2FFFF DC32 0xfffffffffffff200
\ 00000184 ........ DC32 `?<Constant "\\n\\n\\r==================...">`
\ 00000188 ........ DC32 `?<Constant "*****AT91SAM7A3 Basic...">`
\ 0000018C ........ DC32 `?<Constant "=====================...">`
\ 00000190 00F4FFFF DC32 0xfffffffffffff400
\ 00000194 ........ DC32 AT91F_CAN0_Handler
\ 00000198 00F0FFFF DC32 0xfffffffffffff000
\ 0000019C ........ DC32 AT91F_CAN1_Handler
\ 000001A0 66304A00 DC32 0x4a3066
\ 000001A4 31750000 DC32 0x7531
\ 000001A8 ........ DC32 ??datas
\ 000001AC FF7F0000 DC32 0x7fff
233 }
234 }
\ In segment DATA_I, align 4, align-sorted
\ ??datas:
\ 00000000 DS8 4
\ 00000004 REQUIRE `?<Initializer for datas>`
\ In segment CODE, align 4, keep-with-next
\ ??DataTable19:
\ 00000000 25640000 DC8 "%d",+0
\ In segment CODE, align 4, keep-with-next
\ ??DataTable26:
\ 00000000 ........ DC32 _Stdout
\ In segment CODE, align 4, keep-with-next
\ ??DataTable27:
\ 00000000 0000F8FF DC32 0xfffffffffff80000
\
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -