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