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

📄 can.lst

📁 Tried to make CAN logger on AT91sam7X-ek, but have no idea how to implement FATFs... -( I m just a
💻 LST
📖 第 1 页 / 共 5 页
字号:
    225                                  //CAN_MB_MDLx
    226                                  pCAN1Transfer->data_low_reg = 
    227                                     (*(unsigned int*)((unsigned int)CAN_Mailbox+(unsigned int)(0x14+(0x20*numMailbox))));
    228                                  //CAN_MB_MDHx
    229                                  pCAN1Transfer->data_high_reg = 
    230                                     (*(unsigned int*)((unsigned int)CAN_Mailbox+(unsigned int)(0x18+(0x20*numMailbox))));
    231                                  pCAN1Transfer->size = (can_msr>>16)&0xF;
    232                                  pCAN1Transfer->mailbox_number = numMailbox;
    233                                  state1 = CAN_IDLE;
    234                              }
    235          #endif
    236                              // Message Data has been received
    237                              pCan_mcr = (unsigned int*)((unsigned int)CAN_Mailbox+0x1C+(0x20*numMailbox));
    238                              *pCan_mcr = AT91C_CAN_MTCR;
   \                     ??CAN_Handler_8:
   \   000000FC   8008A0E3           MOV      R0,#+8388608
   \   00000100   1C0087E5           STR      R0,[R7, #+28]
   \   00000104   010000EA           B        ??CAN_Handler_4
    239          
    240                          }
    241                          else {
    242                              TRACE_DEBUG("Mailbox is in TRANSMIT\n\r");
    243                              TRACE_DEBUG("Length 0x%X\n\r", (can_msr>>16)&0xF);
    244                              TRACE_DEBUG("can_number %d\n\r", can_number);
    245                              if( can_number == 0 ) {
   \                     ??CAN_Handler_7:
   \   00000108   000055E3           CMP      R5,#+0
    246                                  state0 = CAN_IDLE;
   \   0000010C   0260A003           MOVEQ    R6,#+2
    247                              }
    248                              else {
    249                                  state1 = CAN_IDLE;
    250                              }
    251                          }
    252                      }
    253                  }
   \                     ??CAN_Handler_4:
   \   00000110   018088E2           ADD      R8,R8,#+1
   \   00000114   207087E2           ADD      R7,R7,#+32
   \   00000118   FF0008E2           AND      R0,R8,#0xFF
   \   0000011C   100050E3           CMP      R0,#+16
   \   00000120   D4FFFF3A           BCC      ??CAN_Handler_3
    254                  if( can_number == 0 ) {
   \   00000124   000055E3           CMP      R5,#+0
    255                      pCAN0Transfer->state = state0;
   \   00000128   ........           LDREQ    R0,??DataTable26  ;; pCAN0Transfer
   \   0000012C   00009005           LDREQ    R0,[R0, #+0]
   \   00000130   0060C005           STRBEQ   R6,[R0, #+0]
    256                  }
    257          #ifdef AT91C_BASE_CAN1
    258                  else {
    259                      pCAN1Transfer->state = state1;
    260                  }
    261          #endif
    262              }
    263              if ((status&0xFFCF0000) != 0) {
   \                     ??CAN_Handler_2:
   \   00000134   FF04A0E3           MOV      R0,#-16777216
   \   00000138   CF0880E3           ORR      R0,R0,#0xCF0000
   \   0000013C   040010E1           TST      R0,R4
    264                  CAN_ErrorHandling(status, 0);
   \   00000140   0010A013           MOVNE    R1,#+0
   \   00000144   0400A011           MOVNE    R0,R4
   \   00000148   ........           BLNE     CAN_ErrorHandling
    265              }
    266          }
   \   0000014C   F041BDE8           POP      {R4-R8,LR}
   \   00000150   1EFF2FE1           BX       LR               ;; return
   \                     ??CAN_Handler_6:
   \   00000154   ........           DC32     `?<Constant "-E- Error in MOT\\n\\r">`
    267          
    268          //------------------------------------------------------------------------------
    269          /// CAN 0 Interrupt handler
    270          //------------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    271          static void CAN0_Handler(void)
    272          {
    273              CAN_Handler( 0 );
   \                     CAN0_Handler:
   \   00000000   0000A0E3           MOV      R0,#+0
   \   00000004   ........           B        CAN_Handler      ;; tailcall
    274          }
    275          
    276          //------------------------------------------------------------------------------
    277          /// CAN 1 Interrupt handler
    278          //------------------------------------------------------------------------------
    279          #if defined AT91C_BASE_CAN1
    280          static void CAN1_Handler(void)
    281          {
    282              CAN_Handler( 1 );
    283          }
    284          #endif
    285          
    286          //------------------------------------------------------------------------------
    287          //         Global functions
    288          //------------------------------------------------------------------------------
    289          
    290          //------------------------------------------------------------------------------
    291          /// Configure the corresponding mailbox
    292          /// \param pTransfer can transfer structure
    293          //------------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    294          void CAN_InitMailboxRegisters( CanTransfer *pTransfer )
    295          {
    296              AT91PS_CAN    base_can;
                                   ^
Warning[Pe550]: variable "base_can" was set but never used

      status = (base_can->CAN_SR) & (base_can->CAN_IMR);
      ^
"F:\Diplomovka\IARprojects\Diplomovka\25.4.2009\getting-started-project-at91sam7x-ek-iar\getting-started-project-at91sam7x-ek\at91lib\peripherals\can\can.c",171  Warning[Pa082]: 
          undefined behavior: the order of volatile accesses is undefined in
          this statement
    297              AT91PS_CAN_MB CAN_Mailbox;
    298          
    299              if( pTransfer->can_number == 0 ) {
   \                     CAN_InitMailboxRegisters:
   \   00000000   0120D0E5           LDRB     R2,[R0, #+1]
   \   00000004   000052E3           CMP      R2,#+0
    300                  base_can = AT91C_BASE_CAN0;
    301                  CAN_Mailbox = AT91C_BASE_CAN0_MB0;
   \   00000008   70109F05           LDREQ    R1,??CAN_InitMailboxRegisters_0  ;; 0xfffd0200
    302              }
    303          #ifdef AT91C_BASE_CAN1
    304              else {
    305                  base_can = AT91C_BASE_CAN1;
    306                  CAN_Mailbox = AT91C_BASE_CAN1_MB0;
    307              }
    308          #endif
    309              CAN_Mailbox = (AT91PS_CAN_MB)((unsigned int)CAN_Mailbox+(unsigned int)(0x20*pTransfer->mailbox_number));
   \   0000000C   0220D0E5           LDRB     R2,[R0, #+2]
   \   00000010   821281E0           ADD      R1,R1,R2, LSL #+5
    310          
    311              pTransfer->mailbox_in_use |= 1<<(pTransfer->mailbox_number);
                                                                                ^
Warning[Pa082]: undefined behavior: the order of volatile accesses is
          undefined in this statement
   \   00000014   1C2090E5           LDR      R2,[R0, #+28]
   \   00000018   0130A0E3           MOV      R3,#+1
   \   0000001C   D2C0D0E1           LDRSB    R12,[R0, #+2]
   \   00000020   132C82E1           ORR      R2,R2,R3, LSL R12
   \   00000024   1C2080E5           STR      R2,[R0, #+28]
    312              // MailBox Control Register
    313              CAN_Mailbox->CAN_MB_MCR = 0x0;
   \   00000028   0020A0E3           MOV      R2,#+0
   \   0000002C   1C2081E5           STR      R2,[R1, #+28]
    314              // MailBox Mode Register
    315              CAN_Mailbox->CAN_MB_MMR = 0x00;
   \   00000030   002081E5           STR      R2,[R1, #+0]
    316              // CAN Message Acceptance Mask Register
    317              CAN_Mailbox->CAN_MB_MAM = pTransfer->acceptance_mask_reg;
   \   00000034   082090E5           LDR      R2,[R0, #+8]
   \   00000038   042081E5           STR      R2,[R1, #+4]
    318              // MailBox ID Register
    319              // Disable the mailbox before writing to CAN_MIDx registers
    320              if( (pTransfer->identifier & AT91C_CAN_MIDE) == AT91C_CAN_MIDE ) {
   \   0000003C   0C2090E5           LDR      R2,[R0, #+12]
   \   00000040   800512E3           TST      R2,#0x20000000
   \   00000044   042091E5           LDR      R2,[R1, #+4]
    321                  // Extended
    322                  CAN_Mailbox->CAN_MB_MAM |= AT91C_CAN_MIDE;
   \   00000048   80258213           ORRNE    R2,R2,#0x20000000
    323              }
    324              else {
    325                  CAN_Mailbox->CAN_MB_MAM &= ~AT91C_CAN_MIDE;
   \   0000004C   8025C203           BICEQ    R2,R2,#0x20000000
   \   00000050   042081E5           STR      R2,[R1, #+4]
    326              }
    327              CAN_Mailbox->CAN_MB_MID = pTransfer->identifier;
   \   00000054   0C2090E5           LDR      R2,[R0, #+12]
   \   00000058   082081E5           STR      R2,[R1, #+8]
    328          
    329              // MailBox Mode Register
    330              CAN_Mailbox->CAN_MB_MMR = pTransfer->mode_reg;
   \   0000005C   042090E5           LDR      R2,[R0, #+4]
   \   00000060   002081E5           STR      R2,[R1, #+0]
    331              // MailBox Data Low Register
    332              CAN_Mailbox->CAN_MB_MDL = pTransfer->data_low_reg;
   \   00000064   102090E5           LDR      R2,[R0, #+16]
   \   00000068   142081E5           STR      R2,[R1, #+20]
    333              // MailBox Data High Register
    334              CAN_Mailbox->CAN_MB_MDH = pTransfer->data_high_reg;
   \   0000006C   142090E5           LDR      R2,[R0, #+20]
   \   00000070   182081E5           STR      R2,[R1, #+24]
    335              // MailBox Control Register
    336              CAN_Mailbox->CAN_MB_MCR = pTransfer->control_reg;
   \   00000074   180090E5           LDR      R0,[R0, #+24]
   \   00000078   1C0081E5           STR      R0,[R1, #+28]
    337          }
   \   0000007C   1EFF2FE1           BX       LR               ;; return
   \                     ??CAN_InitMailboxRegisters_0:
   \   00000080   0002FDFF           DC32     0xfffd0200
    338          
    339          //------------------------------------------------------------------------------
    340          /// Reset the MBx
    341          //------------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    342          void CAN_ResetAllMailbox( void )
    343          {
   \                     CAN_ResetAllMailbox:
   \   00000000   10402DE9           PUSH     {R4,LR}
    344              unsigned char i;
    345            
    346          #if defined (AT91C_BASE_CAN0_MB0)
    347              CAN_ResetTransfer( pCAN0Transfer );
   \   00000004   ........           LDR      R0,??DataTable26  ;; pCAN0Transfer
   \   00000008   000090E5           LDR      R0,[R0, #+0]
   \   0000000C   ........           BL       CAN_ResetTransfer
    348              for( i=0; i<8; i++ ) {
   \   00000010   0040A0E3           MOV      R4,#+0
    349                  pCAN0Transfer->can_number = 0;
   \                     ??CAN_ResetAllMailbox_0:
   \   00000014   ........           LDR      R0,??DataTable26  ;; pCAN0Transfer
   \   00000018   000090E5           LDR      R0,[R0, #+0]
   \   0000001C   0010A0E3           MOV      R1,#+0
   \   00000020   0110C0E5           STRB     R1,[R0, #+1]
    350                  pCAN0Transfer->mailbox_number = i;
   \   00000024   ........           LDR      R0,??DataTable26  ;; pCAN0Transfer
   \   00000028   000090E5           LDR      R0,[R0, #+0]
   \   0000002C   0240C0E5           STRB     R4,[R0, #+2]
    351                  pCAN0Transfer->mode_reg = AT91C_CAN_MOT_DIS;
   \   00000030   ........           LDR      R0,??DataTable26  ;; pCAN0Transfer

⌨️ 快捷键说明

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