⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lst

📁 Atmel arm can总线的应用程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   00000000   00B5               PUSH        {LR}
   \   00000002   0022               MOV         R2,#+0
   \   00000004   C021               MOV         R1,#+0xC0
   \   00000006   8905               LSL         R1,R1,#+0x16       ;; #+0x30000000
   \   00000008   0448               LDR         R0,??AT91F_CAN1_CfgPIO_0  ;; 0xfffff400
   \   0000000A   ........           _BLF        AT91F_PIO_CfgPeriph,AT91F_PIO_CfgPeriph??rT
   \   0000000E   8022               MOV         R2,#+0x80
   \   00000010   0021               MOV         R1,#+0
   \   00000012   0348               LDR         R0,??AT91F_CAN1_CfgPIO_0+0x4  ;; 0xfffff600
   \   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        0xfffff400
   \   00000020   00F6FFFF           DC32        0xfffff600
     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,#+0x4
     32            volatile unsigned int status;
     33          		
     34            status = AT91F_CAN_GetStatus(AT91C_BASE_CAN0) & AT91F_CAN_GetInterruptMaskStatus(AT91C_BASE_CAN0);
   \   00000004   ....               LDR         R0,??DataTable27   ;; 0xfff80000
   \   00000006   ........           _BLF        AT91F_CAN_GetStatus,AT91F_CAN_GetStatus??rT
   \   0000000A   051C               MOV         R5,R0
   \   0000000C   ....               LDR         R0,??DataTable27   ;; 0xfff80000
   \   0000000E   ........           _BLF        AT91F_CAN_GetInterruptMaskStatus,AT91F_CAN_GetInterruptMaskStatus??rT
   \   00000012   2840               AND         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   ;; 0xfff80000
   \   0000001A   ........           _BLF        AT91F_CAN_DisableIt,AT91F_CAN_DisableIt??rT
     36            int RxData=AT91F_CAN_GetMessageDataLow(&AT91C_BASE_CAN0->CAN_MB0) ;
   \   0000001E   ....               LDR         R0,??DataTable18   ;; 0xfff80200
   \   00000020   ........           _BLF        AT91F_CAN_GetMessageDataLow,AT91F_CAN_GetMessageDataLow??rT
   \   00000024   041C               MOV         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_0
   \   0000002C   0A49               LDR         R1,??AT91F_CAN0_Handler_1  ;; `?<Constant "______Interrupt now i...">`
   \   0000002E   ....               LDR         R0,??DataTable26   ;; _Stdout
   \   00000030   ........           _BLF        fprintf,fprintf??rT
     38            TRACE_INFO("%d",RxData);
   \                     ??AT91F_CAN0_Handler_0:
   \   00000034   ....               LDR         R0,??DataTable26   ;; _Stdout
   \   00000036   0028               CMP         R0,#+0
   \   00000038   04D0               BEQ         ??AT91F_CAN0_Handler_2
   \   0000003A   221C               MOV         R2,R4
   \   0000003C   ....               LDR         R1,??DataTable13   ;; `?<Constant "%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               LSL         R0,R0,#+0xA
   \   00000048   02D5               BPL         ??AT91F_CAN0_Handler_3
     40              testCAN0 = AT91C_TEST_OK;
   \   0000004A   0448               LDR         R0,??AT91F_CAN0_Handler_1+0x4  ;; testCAN0
   \   0000004C   0121               MOV         R1,#+0x1
   \   0000004E   0170               STRB        R1,[R0, #+0]
     41              TRACE_DEBUG_H("=> CAN0 WAKEUP ");
     42            }
     43          
     44          }
   \                     ??AT91F_CAN0_Handler_3:
   \   00000050   01B0               ADD         SP,#+0x4
   \   00000052   30BC               POP         {R4,R5}
   \   00000054   01BC               POP         {R0}
   \   00000056   0047               BX          R0                 ;; return
   \                     ??AT91F_CAN0_Handler_1:
   \   00000058   ........           DC32        `?<Constant "______Interrupt now i...">`
   \   0000005C   ........           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   70B5               PUSH        {R4-R6,LR}
   \   00000002   81B0               SUB         SP,#+0x4
     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   ;; 0xfff84000
   \   00000006   ........           _BLF        AT91F_CAN_GetStatus,AT91F_CAN_GetStatus??rT
   \   0000000A   051C               MOV         R5,R0
   \   0000000C   ....               LDR         R0,??DataTable28   ;; 0xfff84000
   \   0000000E   ........           _BLF        AT91F_CAN_GetInterruptMaskStatus,AT91F_CAN_GetInterruptMaskStatus??rT
   \   00000012   2840               AND         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   ;; 0xfff84000
   \   0000001A   ........           _BLF        AT91F_CAN_DisableIt,AT91F_CAN_DisableIt??rT
     57          
     58           /* RxData=AT91F_CAN_GetMessageDataLow(&AT91C_BASE_CAN1->CAN_MB0)  ;     //接收低四位
     59            TRACE_INFO("\r\nCAN1-MailBox0_______Interrupt received  data,Low  is:") ;
     60            TRACE_INFO("%d",RxData );
     61            RxData=AT91F_CAN_GetMessageDataHigh(&AT91C_BASE_CAN1->CAN_MB0) ;     //接收高四位
     62            TRACE_INFO("\r\nCAN1-MailBox0_______Interrupt received  data,High is:") ;
     63            TRACE_INFO("%d",RxData );
     64          
     65          */
     66          
     67            RxData=AT91F_CAN_GetMessageDataHigh(&AT91C_BASE_CAN1->CAN_MB0) ;
   \   0000001E   2248               LDR         R0,??AT91F_CAN1_Handler_0  ;; 0xfff84200
   \   00000020   ........           _BLF        AT91F_CAN_GetMessageDataHigh,AT91F_CAN_GetMessageDataHigh??rT
   \   00000024   041C               MOV         R4,R0
     68            TRACE_INFO("%d",RxData );
   \   00000026   ....               LDR         R0,??DataTable26   ;; _Stdout
   \   00000028   0028               CMP         R0,#+0
   \   0000002A   04D0               BEQ         ??AT91F_CAN1_Handler_1
   \   0000002C   221C               MOV         R2,R4
   \   0000002E   ....               LDR         R1,??DataTable13   ;; `?<Constant "%d">`
   \   00000030   ....               LDR         R0,??DataTable26   ;; _Stdout
   \   00000032   ........           _BLF        fprintf,fprintf??rT
     69            TRACE_INFO("\r\n");
   \                     ??AT91F_CAN1_Handler_1:
   \   00000036   ....               LDR         R0,??DataTable26   ;; _Stdout
   \   00000038   0028               CMP         R0,#+0
   \   0000003A   03D0               BEQ         ??AT91F_CAN1_Handler_2
   \   0000003C   1B49               LDR         R1,??AT91F_CAN1_Handler_0+0x4  ;; `?<Constant "\\r\\n">`
   \   0000003E   ....               LDR         R0,??DataTable26   ;; _Stdout
   \   00000040   ........           _BLF        fprintf,fprintf??rT
     70          
     71          
     72          
     73            if((AT91F_CAN_GetMessageDataLow(&AT91C_BASE_CAN1->CAN_MB0)!=AT91F_CAN_GetMessageDataLow(&AT91C_BASE_CAN0->CAN_MB0))
     74                 |(AT91F_CAN_GetMessageDataHigh(&AT91C_BASE_CAN1->CAN_MB0)!=AT91F_CAN_GetMessageDataHigh(&AT91C_BASE_CAN0->CAN_MB0)))
   \                     ??AT91F_CAN1_Handler_2:
   \   00000044   1848               LDR         R0,??AT91F_CAN1_Handler_0  ;; 0xfff84200
   \   00000046   ........           _BLF        AT91F_CAN_GetMessageDataLow,AT91F_CAN_GetMessageDataLow??rT
   \   0000004A   051C               MOV         R5,R0
   \   0000004C   ....               LDR         R0,??DataTable18   ;; 0xfff80200
   \   0000004E   ........           _BLF        AT91F_CAN_GetMessageDataLow,AT91F_CAN_GetMessageDataLow??rT
   \   00000052   8542               CMP         R5,R0
   \   00000054   01D0               BEQ         ??AT91F_CAN1_Handler_3
   \   00000056   0125               MOV         R5,#+0x1
   \   00000058   00E0               B           ??AT91F_CAN1_Handler_4
   \                     ??AT91F_CAN1_Handler_3:
   \   0000005A   0025               MOV         R5,#+0
   \                     ??AT91F_CAN1_Handler_4:
   \   0000005C   1248               LDR         R0,??AT91F_CAN1_Handler_0  ;; 0xfff84200
   \   0000005E   ........           _BLF        AT91F_CAN_GetMessageDataHigh,AT91F_CAN_GetMessageDataHigh??rT
   \   00000062   061C               MOV         R6,R0
   \   00000064   ....               LDR         R0,??DataTable18   ;; 0xfff80200
   \   00000066   ........           _BLF        AT91F_CAN_GetMessageDataHigh,AT91F_CAN_GetMessageDataHigh??rT
   \   0000006A   8642               CMP         R6,R0
   \   0000006C   01D0               BEQ         ??AT91F_CAN1_Handler_5
   \   0000006E   0120               MOV         R0,#+0x1
   \   00000070   00E0               B           ??AT91F_CAN1_Handler_6
   \                     ??AT91F_CAN1_Handler_5:
   \   00000072   0020               MOV         R0,#+0
   \                     ??AT91F_CAN1_Handler_6:
   \   00000074   2843               ORR         R0,R5
   \   00000076   0006               LSL         R0,R0,#+0x18       ;; ZeroExt     R0,R0,#+0x18,#+0x18
   \   00000078   000E               LSR         R0,R0,#+0x18
   \   0000007A   0028               CMP         R0,#+0
   \   0000007C   06D0               BEQ         ??AT91F_CAN1_Handler_7
     75               TRACE_INFO("\r\n*********************ERROR**************************************") ;
   \   0000007E   ....               LDR         R0,??DataTable26   ;; _Stdout
   \   00000080   0028               CMP         R0,#+0
   \   00000082   03D0               BEQ         ??AT91F_CAN1_Handler_7
   \   00000084   0A49               LDR         R1,??AT91F_CAN1_Handler_0+0x8  ;; `?<Constant "\\r\\n*******************...">`
   \   00000086   ....               LDR         R0,??DataTable26   ;; _Stdout
   \   00000088   ........           _BLF        fprintf,fprintf??rT
     76          
     77            /**如果如下指令不执行的话,所有读出的数据都将是第一次接收到的数据**/
     78            AT91C_BASE_CAN1_MB0->CAN_MB_MCR=AT91C_CAN_MTCR & (0x1<<23);          //允许接收下一条消息
   \                     ??AT91F_CAN1_Handler_7:
   \   0000008C   0948               LDR         R0,??AT91F_CAN1_Handler_0+0xC  ;; 0xfff8421c
   \   0000008E   8021               MOV         R1,#+0x80
   \   00000090   0904               LSL         R1,R1,#+0x10       ;; #+0x800000
   \   00000092   0160               STR         R1,[R0, #+0]
     79            /*******************************************************************/
     80          
     81            if((status & AT91C_CAN_WAKEUP) == AT91C_CAN_WAKEUP) {
   \   00000094   0098               LDR         R0,[SP, #+0]
   \   00000096   8002               LSL         R0,R0,#+0xA
   \   00000098   02D5               BPL         ??AT91F_CAN1_Handler_8
     82              testCAN1 = AT91C_TEST_OK;
   \   0000009A   0748               LDR         R0,??AT91F_CAN1_Handler_0+0x10  ;; testCAN1
   \   0000009C   0121               MOV         R1,#+0x1
   \   0000009E   0170               STRB        R1,[R0, #+0]
     83              TRACE_DEBUG_H("=> CAN1 WAKEUP ");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -