📄 main.lst
字号:
\ 0000000E C046 Nop
\ ??AT91F_CAN0_CfgPMC_0:
\ 00000010 00FCFFFF DC32 0xfffffffffffffc00
\ In segment CODE, align 4, keep-with-next
\ __??Code16?? __code __interwork __atpcs void AT91F_CAN0_CfgPIO(void)
\ AT91F_CAN0_CfgPIO:
\ 00000000 00B5 PUSH {LR}
\ 00000002 0022 MOVS R2,#+0
\ 00000004 C021 MOVS R1,#+192
\ 00000006 0905 LSLS R1,R1,#+20 ;; #+201326592
\ 00000008 0248 LDR R0,??AT91F_CAN0_CfgPIO_0 ;; 0xfffffffffffff400
\ 0000000A ........ _BLF AT91F_PIO_CfgPeriph,??AT91F_PIO_CfgPeriph??rT
\ 0000000E 01BC POP {R0}
\ 00000010 0047 BX R0 ;; return
\ 00000012 C046 Nop
\ ??AT91F_CAN0_CfgPIO_0:
\ 00000014 00F4FFFF DC32 0xfffffffffffff400
\ In segment CODE, align 4, keep-with-next
\ __??Code16?? __code __interwork __atpcs void AT91F_CAN1_CfgPMC(void)
\ AT91F_CAN1_CfgPMC:
\ 00000000 00B5 PUSH {LR}
\ 00000002 2021 MOVS R1,#+32
\ 00000004 0248 LDR R0,??AT91F_CAN1_CfgPMC_0 ;; 0xfffffffffffffc00
\ 00000006 ........ _BLF AT91F_PMC_EnablePeriphClock,??AT91F_PMC_EnablePeriphClock??rT
\ 0000000A 01BC POP {R0}
\ 0000000C 0047 BX R0 ;; return
\ 0000000E C046 Nop
\ ??AT91F_CAN1_CfgPMC_0:
\ 00000010 00FCFFFF DC32 0xfffffffffffffc00
\ In segment CODE, align 4, keep-with-next
\ __??Code16?? __code __interwork __atpcs void AT91F_CAN1_CfgPIO(void)
\ AT91F_CAN1_CfgPIO:
\ 00000000 00B5 PUSH {LR}
\ 00000002 0022 MOVS R2,#+0
\ 00000004 C021 MOVS R1,#+192
\ 00000006 8905 LSLS R1,R1,#+22 ;; #+805306368
\ 00000008 0448 LDR R0,??AT91F_CAN1_CfgPIO_0 ;; 0xfffffffffffff400
\ 0000000A ........ _BLF AT91F_PIO_CfgPeriph,??AT91F_PIO_CfgPeriph??rT
\ 0000000E 8022 MOVS R2,#+128
\ 00000010 0021 MOVS R1,#+0
\ 00000012 0348 LDR R0,??AT91F_CAN1_CfgPIO_0+0x4 ;; 0xfffffffffffff600
\ 00000014 ........ _BLF AT91F_PIO_CfgPeriph,??AT91F_PIO_CfgPeriph??rT
\ 00000018 01BC POP {R0}
\ 0000001A 0047 BX R0 ;; return
\ ??AT91F_CAN1_CfgPIO_0:
\ 0000001C 00F4FFFF DC32 0xfffffffffffff400
\ 00000020 00F6FFFF DC32 0xfffffffffffff600
21 /* Global variables */
\ In segment DATA_Z, align 1, align-sorted
22 volatile char testCAN0 = AT91C_TEST_NOK;
\ testCAN0:
\ 00000000 DS8 1
\ In segment DATA_Z, align 1, align-sorted
23 volatile char testCAN1 = AT91C_TEST_NOK;
\ testCAN1:
\ 00000000 DS8 1
24 extern void CanSendData(unsigned int LData,unsigned HData) ;
25
26 //*----------------------------------------------------------------------------
27 //* \fn AT91F_CAN0_Handler
28 //* \brief
29 //*----------------------------------------------------------------------------
\ In segment CODE, align 4, keep-with-next
30 void AT91F_CAN0_Handler(void)
31 {
\ AT91F_CAN0_Handler:
\ 00000000 30B5 PUSH {R4,R5,LR}
\ 00000002 81B0 SUB SP,SP,#+4
32 volatile unsigned int status;
33
34 status = AT91F_CAN_GetStatus(AT91C_BASE_CAN0) & AT91F_CAN_GetInterruptMaskStatus(AT91C_BASE_CAN0);
\ 00000004 .... LDR R0,??DataTable27 ;; 0xfffffffffff80000
\ 00000006 ........ _BLF AT91F_CAN_GetStatus,??AT91F_CAN_GetStatus??rT
\ 0000000A 0500 MOVS R5,R0
\ 0000000C .... LDR R0,??DataTable27 ;; 0xfffffffffff80000
\ 0000000E ........ _BLF AT91F_CAN_GetInterruptMaskStatus,??AT91F_CAN_GetInterruptMaskStatus??rT
\ 00000012 2840 ANDS R0,R0,R5
\ 00000014 0090 STR R0,[SP, #+0]
35 AT91F_CAN_DisableIt(AT91C_BASE_CAN0,status);
\ 00000016 0099 LDR R1,[SP, #+0]
\ 00000018 .... LDR R0,??DataTable27 ;; 0xfffffffffff80000
\ 0000001A ........ _BLF AT91F_CAN_DisableIt,??AT91F_CAN_DisableIt??rT
36 int RxData=AT91F_CAN_GetMessageDataLow(&AT91C_BASE_CAN0->CAN_MB0) ;
\ 0000001E 0E48 LDR R0,??AT91F_CAN0_Handler_0 ;; 0xfffffffffff80200
\ 00000020 ........ _BLF AT91F_CAN_GetMessageDataLow,??AT91F_CAN_GetMessageDataLow??rT
\ 00000024 0400 MOVS R4,R0
37 TRACE_INFO("______Interrupt now is received some data____________") ;
\ 00000026 .... LDR R0,??DataTable26 ;; _Stdout
\ 00000028 0028 CMP R0,#+0
\ 0000002A 03D0 BEQ ??AT91F_CAN0_Handler_1
\ 0000002C 0B49 LDR R1,??AT91F_CAN0_Handler_0+0x4 ;; `?<Constant "______Interrupt now i...">`
\ 0000002E .... LDR R0,??DataTable26 ;; _Stdout
\ 00000030 ........ _BLF fprintf,??fprintf??rT
38 TRACE_INFO("%d",RxData);
\ ??AT91F_CAN0_Handler_1:
\ 00000034 .... LDR R0,??DataTable26 ;; _Stdout
\ 00000036 0028 CMP R0,#+0
\ 00000038 04D0 BEQ ??AT91F_CAN0_Handler_2
\ 0000003A 2200 MOVS R2,R4
\ 0000003C .... ADR R1,??DataTable19 ;; "%d"
\ 0000003E .... LDR R0,??DataTable26 ;; _Stdout
\ 00000040 ........ _BLF fprintf,??fprintf??rT
39 if(status & AT91C_CAN_WAKEUP) {
\ ??AT91F_CAN0_Handler_2:
\ 00000044 0098 LDR R0,[SP, #+0]
\ 00000046 8002 LSLS R0,R0,#+10
\ 00000048 02D5 BPL ??AT91F_CAN0_Handler_3
40 testCAN0 = AT91C_TEST_OK;
\ 0000004A 0548 LDR R0,??AT91F_CAN0_Handler_0+0x8 ;; testCAN0
\ 0000004C 0121 MOVS R1,#+1
\ 0000004E 0170 STRB R1,[R0, #+0]
41 TRACE_DEBUG_H("=> CAN0 WAKEUP ");
42 }
43
44 }
\ ??AT91F_CAN0_Handler_3:
\ 00000050 01B0 ADD SP,SP,#+4
\ 00000052 30BC POP {R4,R5}
\ 00000054 01BC POP {R0}
\ 00000056 0047 BX R0 ;; return
\ ??AT91F_CAN0_Handler_0:
\ 00000058 0002F8FF DC32 0xfffffffffff80200
\ 0000005C ........ DC32 `?<Constant "______Interrupt now i...">`
\ 00000060 ........ DC32 testCAN0
45
46 //*----------------------------------------------------------------------------
47 //* \fn AT91F_CAN1_Handler
48 //* \brief
49 //*----------------------------------------------------------------------------
\ In segment CODE, align 4, keep-with-next
50 void AT91F_CAN1_Handler(void) //接收CAN0 ->MB0 发送的数据
51 {
\ AT91F_CAN1_Handler:
\ 00000000 30B5 PUSH {R4,R5,LR}
\ 00000002 81B0 SUB SP,SP,#+4
52 volatile unsigned int status;
53 int RxData ;
54
55 status = AT91F_CAN_GetStatus(AT91C_BASE_CAN1) & AT91F_CAN_GetInterruptMaskStatus(AT91C_BASE_CAN1);
\ 00000004 .... LDR R0,??DataTable28 ;; 0xfffffffffff84000
\ 00000006 ........ _BLF AT91F_CAN_GetStatus,??AT91F_CAN_GetStatus??rT
\ 0000000A 0500 MOVS R5,R0
\ 0000000C .... LDR R0,??DataTable28 ;; 0xfffffffffff84000
\ 0000000E ........ _BLF AT91F_CAN_GetInterruptMaskStatus,??AT91F_CAN_GetInterruptMaskStatus??rT
\ 00000012 2840 ANDS R0,R0,R5
\ 00000014 0090 STR R0,[SP, #+0]
56 AT91F_CAN_DisableIt(AT91C_BASE_CAN1,status);
\ 00000016 0099 LDR R1,[SP, #+0]
\ 00000018 .... LDR R0,??DataTable28 ;; 0xfffffffffff84000
\ 0000001A ........ _BLF AT91F_CAN_DisableIt,??AT91F_CAN_DisableIt??rT
57
58 RxData=AT91F_CAN_GetMessageDataLow(&AT91C_BASE_CAN1->CAN_MB0) ; //接收低四位
\ 0000001E 1A48 LDR R0,??AT91F_CAN1_Handler_0 ;; 0xfffffffffff84200
\ 00000020 ........ _BLF AT91F_CAN_GetMessageDataLow,??AT91F_CAN_GetMessageDataLow??rT
\ 00000024 0400 MOVS R4,R0
59 TRACE_INFO("\r\n______Interrupt received data,Low is:") ;
\ 00000026 .... LDR R0,??DataTable26 ;; _Stdout
\ 00000028 0028 CMP R0,#+0
\ 0000002A 03D0 BEQ ??AT91F_CAN1_Handler_1
\ 0000002C 1749 LDR R1,??AT91F_CAN1_Handler_0+0x4 ;; `?<Constant "\\r\\n______Interrupt rec...">`
\ 0000002E .... LDR R0,??DataTable26 ;; _Stdout
\ 00000030 ........ _BLF fprintf,??fprintf??rT
60 TRACE_INFO("%d",RxData );
\ ??AT91F_CAN1_Handler_1:
\ 00000034 .... LDR R0,??DataTable26 ;; _Stdout
\ 00000036 0028 CMP R0,#+0
\ 00000038 04D0 BEQ ??AT91F_CAN1_Handler_2
\ 0000003A 2200 MOVS R2,R4
\ 0000003C .... ADR R1,??DataTable19 ;; "%d"
\ 0000003E .... LDR R0,??DataTable26 ;; _Stdout
\ 00000040 ........ _BLF fprintf,??fprintf??rT
61 RxData=AT91F_CAN_GetMessageDataHigh(&AT91C_BASE_CAN1->CAN_MB0) ; //接收高四位
\ ??AT91F_CAN1_Handler_2:
\ 00000044 1048 LDR R0,??AT91F_CAN1_Handler_0 ;; 0xfffffffffff84200
\ 00000046 ........ _BLF AT91F_CAN_GetMessageDataHigh,??AT91F_CAN_GetMessageDataHigh??rT
\ 0000004A 0400 MOVS R4,R0
62 TRACE_INFO("\r\n_______Interrupt received data,High is:") ;
\ 0000004C .... LDR R0,??DataTable26 ;; _Stdout
\ 0000004E 0028 CMP R0,#+0
\ 00000050 03D0 BEQ ??AT91F_CAN1_Handler_3
\ 00000052 0F49 LDR R1,??AT91F_CAN1_Handler_0+0x8 ;; `?<Constant "\\r\\n_______Interrupt re...">`
\ 00000054 .... LDR R0,??DataTable26 ;; _Stdout
\ 00000056 ........ _BLF fprintf,??fprintf??rT
63
64 /**如果如下指令不执行的话,所有读出的数据都将是第一次接收到的数据**/
65 AT91C_BASE_CAN1_MB0->CAN_MB_MCR=AT91C_CAN_MTCR; //允许接收下一条消息
\ ??AT91F_CAN1_Handler_3:
\ 0000005A 0E48 LDR R0,??AT91F_CAN1_Handler_0+0xC ;; 0xfffffffffff8421c
\ 0000005C 8021 MOVS R1,#+128
\ 0000005E 0904 LSLS R1,R1,#+16 ;; #+8388608
\ 00000060 0160 STR R1,[R0, #+0]
66 /*******************************************************************/
67 TRACE_INFO("%d",RxData );
\ 00000062 .... LDR R0,??DataTable26 ;; _Stdout
\ 00000064 0028 CMP R0,#+0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -