📄 main.lst
字号:
154 AT91F_CAN0_CfgPIO();
\ ??main_6:
\ 000000B4 ........ _BLF AT91F_CAN0_CfgPIO,AT91F_CAN0_CfgPIO??rT
155 AT91F_CAN1_CfgPIO();
\ 000000B8 ........ _BLF AT91F_CAN1_CfgPIO,AT91F_CAN1_CfgPIO??rT
156 // Enable CAN0 and CAN1 Clocks
157 AT91F_CAN0_CfgPMC();
\ 000000BC ........ _BLF AT91F_CAN0_CfgPMC,AT91F_CAN0_CfgPMC??rT
158 AT91F_CAN1_CfgPMC();
\ 000000C0 ........ _BLF AT91F_CAN1_CfgPMC,AT91F_CAN1_CfgPMC??rT
159
160 // Enable CANs Transceivers
161 AT91F_PIOA_CfgPMC();
\ 000000C4 ........ _BLF AT91F_PIOA_CfgPMC,AT91F_PIOA_CfgPMC??rT
162 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
163 // Clear PA23 <=> Enable Transceiver Normal Mode (versus Standby mode)
164 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
165
166 // Init CAN0 Interrupt Source Level
167 AT91F_AIC_ConfigureIt(AT91C_BASE_AIC, // CAN0 base address
168 AT91C_ID_CAN0, // CAN0 ID
169 AT91C_AIC_PRIOR_HIGHEST, // Max priority
170 AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, // Level sensitive
171 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
172
173 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
174
175 // Init CAN1 Interrupt Source Level
176 AT91F_AIC_ConfigureIt(AT91C_BASE_AIC, // CAN1 base address
177 AT91C_ID_CAN1, // CAN1 ID
178 AT91C_AIC_PRIOR_HIGHEST, // Max priority
179 AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, // Level sensitive
180 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
181
182 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
183
184 // Cfg CAN Baudrate to 1Mbit/s => BRP = 5
185 // We choose 8 Time Quanta (tCSC = 125ns): 8tCSC = tSYNC + tPRS + tPHS1 + tPHS2
186 // Cfg PHASE1 PHASE2 PROPAG and SYNC segment
187 // Delay of busdriver + delay of receiver circuit = 200ns
188 // Delay of bus line considered negligible = 0ns
189 // tPRS = 2*(200+0) = 400ns < 4tCSC => PROPAG = 3
190 // tSYNC = 1tCSC => 8tCSC = 1tCSC + 4tCSC + tPHS1 + tPHS2
191 // tPHS1 + tPHS2 = 3tCSC => Phase Segment 2 = Max(IPT=2TQ,Phase Segment 1) = 2TQ => PHASE2 = 2-1 = 1 => PHASE1 = 0
192 // tSJW = Min(4 TQ, Phase Segment 1) = 1TQ => SJW = 1-1 = 0
193
194 //AT91F_CAN_CfgBaudrateReg(AT91C_BASE_CAN0,0x007c3066); //config 1D3066= 100K,相互通讯的两个CAN的拨特率必须相同
195 //AT91F_CAN_CfgBaudrateReg(AT91C_BASE_CAN1,0x007c3066); //0x007c3066=24k
196
197 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
198 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
199 //当频率变为 6MHz时候 ,5K =0x004A3066
200
201 ///////////////////////////////////////////////////////////////////////////////////////////
202 // Enter Main Application
203 ///////////////////////////////////////////////////////////////////////////////////////////
204
205 AT91F_BasicTestSuite(); //进行一次测试
\ 00000120 ........ _BLF AT91F_BasicTestSuite,AT91F_BasicTestSuite??rT
206
207 for(;;)
208 {
209 /**以100K的速率由 CAN0->Mailbox0 向 Can1->Mailbox0 发送数据**/
210
211 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
212 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
213 for(int j=0;j<=12;j++)
\ 00000136 0022 MOV R2,#+0
\ ??main_11:
\ 00000138 0D2A CMP R2,#+0xD
\ 0000013A 02DA BGE ??main_12
214 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
215
216 static int datas=1 ;
217 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
218 datas=1 ;
\ 00000150 1548 LDR R0,??main_0+0x3C ;; ??datas
\ 00000152 0121 MOV R1,#+0x1
\ 00000154 0160 STR R1,[R0, #+0]
219 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 001BB700 DC32 0xb71b00
\ 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
220 }
221 }
\ 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
\
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -