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

📄 can_ex1.cod

📁 can bus 源代码
💻 COD
📖 第 1 页 / 共 5 页
字号:
  257:                 DD      0                      /* Reserved Address */
 00000034  00000000  DD          0x0
  258: IRQ_Addr:       DD      IRQ_Handler?A
 00000038          IRQ_Addr:
 00000038  00001FDC  DD          IRQ_Handler?A
  259: FIQ_Addr:       DD      FIQ_Handler?A
 0000003C          FIQ_Addr:
 0000003C  00001FD8  DD          FIQ_Handler?A
  264: Reset_Handler:  
 00000040          Reset_Handler:
  301:                 LDR     R0, =VPBDIV
 00000040  E59F00BC  LDR         R0,[PC,+188] ; PoolRef @0x104
  302:                 LDR     R1, =VPBDIV_Val
 00000044  E3A01001  MOV         R1,#VPBDIV_Val
  303:                 STR     R1, [R0]
 00000048  E5801000  STR         R1,[R0]
  308:                 LDR     R0, =PLL_BASE
 0000004C  E59F00B4  LDR         R0,[PC,+180] ; PoolRef @0x108
  309:                 MOV     R1, #0xAA
 00000050  E3A010AA  MOV         R1,#0x00AA
  310:                 MOV     R2, #0x55
 00000054  E3A02055  MOV         R2,#0x0055
  313:                 MOV     R3, #PLLCFG_Val
 00000058  E3A03024  MOV         R3,#0x0024
  314:                 STR     R3, [R0, #PLLCFG_OFS] 
 0000005C  E5803004  STR         R3,[R0,#PLLCFG_OFS]
  315:                 MOV     R3, #PLLCON_PLLE
 00000060  E3A03001  MOV         R3,#0x0001
  316:                 STR     R3, [R0, #PLLCON_OFS]
 00000064  E5803000  STR         R3,[R0,#PLLCON_OFS]
  317:                 STR     R1, [R0, #PLLFEED_OFS]
 00000068  E580100C  STR         R1,[R0,#PLLFEED_OFS]
  318:                 STR     R2, [R0, #PLLFEED_OFS]
 0000006C  E580200C  STR         R2,[R0,#PLLFEED_OFS]
  321: PLL_Loop:       LDR     R3, [R0, #PLLSTAT_OFS]
 00000070          PLL_Loop:
 00000070  E5903008  LDR         R3,[R0,#PLLSTAT_OFS]
  322:                 ANDS    R3, R3, #PLLSTAT_PLOCK
 00000074  E2133B01  ANDS        R3,R3,#0x0400
  323:                 BEQ     PLL_Loop
 00000078  0AFFFFFC  BEQ         PLL_Loop  ; Targ=0x70
  326:                 MOV     R3, #(PLLCON_PLLE | PLLCON_PLLC)
 0000007C  E3A03003  MOV         R3,#0x0003
  327:                 STR     R3, [R0, #PLLCON_OFS]
 00000080  E5803000  STR         R3,[R0,#PLLCON_OFS]
  328:                 STR     R1, [R0, #PLLFEED_OFS]
 00000084  E580100C  STR         R1,[R0,#PLLFEED_OFS]
  329:                 STR     R2, [R0, #PLLFEED_OFS]
 00000088  E580200C  STR         R2,[R0,#PLLFEED_OFS]
  334:                 LDR     R0, =MAM_BASE
 0000008C  E59F0078  LDR         R0,[PC,+120] ; PoolRef @0x10C
  335:                 MOV     R1, #MAMTIM_Val
 00000090  E3A01004  MOV         R1,#0x0004
  336:                 STR     R1, [R0, #MAMTIM_OFS] 
 00000094  E5801004  STR         R1,[R0,#MAMTIM_OFS]
  337:                 MOV     R1, #MAMCR_Val
 00000098  E3A01002  MOV         R1,#0x0002
  338:                 STR     R1, [R0, #MAMCR_OFS] 
 0000009C  E5801000  STR         R1,[R0,#MAMCR_OFS]
  353:                 LDR     R0, =Top_Stack
 000000A0  E59F0068  LDR         R0,[PC,+104] ; PoolRef @0x110
  356:                 MSR     CPSR_c, #Mode_UND|I_Bit|F_Bit
 000000A4  E321F0DB  MSR         CPSR_c,#0xDB
  357:                 MOV     SP, R0
LARM LINKER/LOCATER V2.32a                                                            03/15/2007  08:58:24  PAGE 6


 000000A8  E1A0D000  MOV         R13,R0
  358:                 SUB     R0, R0, #UND_Stack_Size
 000000AC  E2400004  SUB         R0,R0,#0x0004
  361:                 MSR     CPSR_c, #Mode_ABT|I_Bit|F_Bit
 000000B0  E321F0D7  MSR         CPSR_c,#0xD7
  362:                 MOV     SP, R0
 000000B4  E1A0D000  MOV         R13,R0
  363:                 SUB     R0, R0, #ABT_Stack_Size
 000000B8  E2400004  SUB         R0,R0,#0x0004
  366:                 MSR     CPSR_c, #Mode_FIQ|I_Bit|F_Bit
 000000BC  E321F0D1  MSR         CPSR_c,#0xD1
  367:                 MOV     SP, R0
 000000C0  E1A0D000  MOV         R13,R0
  368:                 SUB     R0, R0, #FIQ_Stack_Size
 000000C4  E2400004  SUB         R0,R0,#0x0004
  371:                 MSR     CPSR_c, #Mode_IRQ|I_Bit|F_Bit
 000000C8  E321F0D2  MSR         CPSR_c,#0xD2
  372:                 MOV     SP, R0
 000000CC  E1A0D000  MOV         R13,R0
  373:                 SUB     R0, R0, #IRQ_Stack_Size
 000000D0  E2400080  SUB         R0,R0,#0x0080
  376:                 MSR     CPSR_c, #Mode_SVC|I_Bit|F_Bit
 000000D4  E321F0D3  MSR         CPSR_c,#0xD3
  377:                 MOV     SP, R0
 000000D8  E1A0D000  MOV         R13,R0
  378:                 SUB     R0, R0, #SVC_Stack_Size
 000000DC  E2400020  SUB         R0,R0,#0x0020
  381:                 MSR     CPSR_c, #Mode_USR
 000000E0  E321F010  MSR         CPSR_c,#Mode_USR
  382:                 MOV     SP, R0
 000000E4  E1A0D000  MOV         R13,R0
  385:                 LDR     R0,=?C?INIT
 000000E8  E59F0024  LDR         R0,[PC,+36] ; PoolRef @0x114
  386:                 TST     R0,#1       ; Bit-0 set: INIT is Thumb
 000000EC  E3100001  TST         R0,#0x0001
  387:                 LDREQ   LR,=exit?A  ; ARM Mode
 000000F0  059FE020  LDREQ       R14,[PC,+32] ; PoolRef @0x118
  388:                 LDRNE   LR,=exit?T  ; Thumb Mode
 000000F4  159FE020  LDRNE       R14,[PC,+32] ; PoolRef @0x11C
  389:                 BX      R0
 000000F8  E12FFF10  BX          R0
  390:                 ENDP
 000000FC            ; SCOPE-END
  393: exit?A          PROC    CODE32
 000000FC            ; SCOPE-START
  394:                 B       exit?A
 000000FC  EAFFFFFE  B           exit?A  ; Targ=0xFC
  395:                 ENDP
 00000100            ; SCOPE-END
  398: exit?T          PROC    CODE16
 00000100            ; SCOPE-START
  399: exit:           B       exit?T
 00000100          exit:
 00000100  E7FE      B           exit?T  ; T=0x00000100
  400:                 ENDP
 00000102            ; SCOPE-END
 00000102            ALIGN       4
 00000104  E01FC100  DD          VPBDIV		; POOL-Entry U=1
 00000108  E01FC080  DD          PLL_BASE		; POOL-Entry U=1
 0000010C  E01FC000  DD          MAM_BASE		; POOL-Entry U=1
 00000110  40000788  DD          Top_Stack		; POOL-Entry U=1
 00000114  0000033D  DD          ?C?INIT		; POOL-Entry U=1
 00000118  000000FC  DD          exit?A		; POOL-Entry U=1
 0000011C  00000101  DD          exit?T		; POOL-Entry U=1

LARM LINKER/LOCATER V2.32a                                                            03/15/2007  08:58:24  PAGE 7


*** Disassembly of Segment '?PR?task_send_CAN?T?CAN_Ex1':
 FILE: 'CAN_Ex1.c'
 000001D8          task_send_CAN?T:  ; FUNCTION START
   62: void task_send_CAN (void) __task  {
 000001D8  B084      SUB         R13,#0x10
 000001DA            ; SCOPE-START
   65:                               1, 2, STANDARD_FORMAT, DATA_FRAME };
 000001DA  4C2B      LDR         R4,[R15,#172] ; PoolRef @0x288 ; tsk1
 000001DC  492B      LDR         R1,[R15,#172] ; PoolRef @0x28C ; ?tpl?0001
 000001DE  A800      ADD         R0,R13,#0x0
 000001E0  2204      MOV         R2,#0x4
 000001E2          L_383:
 000001E2  C908      LDMIA       R1!,{R3}
 000001E4  C008      STMIA       R0!,{R3}
 000001E6  1E52      SUB         R2,R2,#0x1
 000001E8  D1FB      BNE         L_383  ; T=0x000001E2
   67:   CAN_init (1, 500000);               /* CAN controller 1 init, 500 kbit/s   */
 000001EA  2001      MOV         R0,#0x1
 000001EC  4928      LDR         R1,[R15,#160] ; PoolRef @0x290
 000001EE  F000      BL          CAN_init?T  ; T=0x0B65  (1)
 000001F0  FCB9      BL          CAN_init?T  ; T=0x0B65  (2)
   68:   CAN_init (2, 500000);               /* CAN controller 2 init, 500 kbit/s   */
 000001F2  2002      MOV         R0,#0x2
 000001F4  4926      LDR         R1,[R15,#152] ; PoolRef @0x290
 000001F6  F000      BL          CAN_init?T  ; T=0x0B65  (1)
 000001F8  FCB5      BL          CAN_init?T  ; T=0x0B65  (2)
   74:   CAN_rx_object (1, 2,  33, STANDARD_FORMAT); /* Enable reception of         */
 000001FA  2001      MOV         R0,#0x1
 000001FC  2102      MOV         R1,#0x2
 000001FE  2221      MOV         R2,#0x21
 00000200  2300      MOV         R3,#0x0
 00000202  F000      BL          CAN_rx_object?T  ; T=0x0C21  (1)
 00000204  FD0D      BL          CAN_rx_object?T  ; T=0x0C21  (2)
   78:   CAN_start (1);                      /* Start controller 1                  */
 00000206  2001      MOV         R0,#0x1
 00000208  F000      BL          CAN_start?T  ; T=0x0BE1  (1)
 0000020A  FCEA      BL          CAN_start?T  ; T=0x0BE1  (2)
   79:   CAN_start (2);                      /* Start controller 2                  */
 0000020C  2002      MOV         R0,#0x2
 0000020E  F000      BL          CAN_start?T  ; T=0x0BE1  (1)
 00000210  FCE7      BL          CAN_start?T  ; T=0x0BE1  (2)
   81:   tsk1 = os_tsk_self ();              /* Get own task identification number  */
 00000212  F001      BL          os_tsk_self?T  ; T=0x1A7D  (1)
 00000214  FC33      BL          os_tsk_self?T  ; T=0x1A7D  (2)
 00000216  6020      STR         R0,[R4,#0x0] ; tsk1
   82:   tsk2 = os_tsk_create (task_rece_CAN, 0);  /* Start receive task            */
 00000218  481E      LDR         R0,[R15,#120] ; PoolRef @0x294 ; task_rece_CAN?T
 0000021A  2200      MOV         R2,#0x0
 0000021C  2100      MOV         R1,#0x0
 0000021E  2300      MOV         R3,#0x0
 00000220  F001      BL          os_tsk_create_user?T  ; T=0x19F5  (1)
 00000222  FBE8      BL          os_tsk_create_user?T  ; T=0x19F5  (2)
 00000224  6060      STR         R0,[R4,#0x4] ; tsk2
   84:   for (;;)  {
 00000226          L_4:
   85:     msg_send.data[0] = get_AD ();     /* Data[0] field = analog value from   */
 00000226  F000      BL          get_AD?T  ; T=0x02C9  (1)
 00000228  F84F      BL          get_AD?T  ; T=0x02C9  (2)
 0000022A  A901      ADD         R1,R13,#0x4
 0000022C  7008      STRB        R0,[R1,#0x0] ; msg_send+4
   87: 	 RESET_WATCH_DOG;                                 /* potentiometer                       */
 0000022E  4A1A      LDR         R2,[R15,#104] ; PoolRef @0x298
 00000230  481A      LDR         R0,[R15,#104] ; PoolRef @0x29C
 00000232  6801      LDR         R1,[R0,#0x0]
 00000234  4311      ORR         R1,R2
LARM LINKER/LOCATER V2.32a                                                            03/15/2007  08:58:24  PAGE 8


 00000236  6001      STR         R1,[R0,#0x0]
 00000238  46C0      NOP         ; MOV R8,R8
 0000023A  46C0      NOP         ; MOV R8,R8
 0000023C  4A16      LDR         R2,[R15,#88] ; PoolRef @0x298
 0000023E  4818      LDR         R0,[R15,#96] ; PoolRef @0x2A0
 00000240  6801      LDR         R1,[R0,#0x0]
 00000242  4311      ORR         R1,R2
 00000244  6001      STR         R1,[R0,#0x0]
 00000246  46C0      NOP         ; MOV R8,R8
 00000248  46C0      NOP         ; MOV R8,R8
 0000024A  4A13      LDR         R2,[R15,#76] ; PoolRef @0x298
 0000024C  4815      LDR         R0,[R15,#84] ; PoolRef @0x2A4
 0000024E  6801      LDR         R1,[R0,#0x0]
 00000250  4311      ORR         R1,R2
 00000252  6001      STR         R1,[R0,#0x0]
 00000254  46C0      NOP         ; MOV R8,R8
 00000256  46C0      NOP         ; MOV R8,R8
 00000258  4A0F      LDR         R2,[R15,#60] ; PoolRef @0x298
 0000025A  4811      LDR         R0,[R15,#68] ; PoolRef @0x2A0
 0000025C  6801      LDR         R1,[R0,#0x0]
 0000025E  4311      ORR         R1,R2
 00000260  6001      STR         R1,[R0,#0x0]
 00000262  46C0      NOP         ; MOV R8,R8
 00000264  46C0      NOP         ; MOV R8,R8
 00000266  4A0C      LDR         R2,[R15,#48] ; PoolRef @0x298
 00000268  480E      LDR         R0,[R15,#56] ; PoolRef @0x2A4
 0000026A  6801      LDR         R1,[R0,#0x0]
 0000026C  4311      ORR         R1,R2
 0000026E  6001      STR         R1,[R0,#0x0]
 00000270  46C0      NOP         ; MOV R8,R8
 00000272  46C0      NOP         ; MOV R8,R8
   89:     CAN_send (2, &msg_send, 0x0f00);  /* Send msg_send on controller 2       */
 00000274  A900      ADD         R1,R13,#0x0
 00000276  2002      MOV         R0,#0x2
 00000278  4A0B      LDR         R2,[R15,#44] ; PoolRef @0x2A8
 0000027A  F000      BL          CAN_send?T  ; T=0x0BED  (1)
 0000027C  FCB7      BL          CAN_send?T  ; T=0x0BED  (2)
   90:     os_dly_wait (100);                /* Wait 1 second                       */
 0000027E  2064      MOV         R0,#0x64
 00000280  F001      BL          os_dly_wait?T  ; T=0x1B8D  (1)
 00000282  FC84      BL          os_dly_wait?T  ; T=0x1B8D  (2)
   91:   }
 00000284  E7CF      B           L_4  ; T=0x00000226
 00000286            ; SCOPE-END
   92: }
 00000286  B004      ADD         R13,#0x10
 00000288            ; END 'task_send_CAN?T'

 00000288  40000000  DD          tsk1		; POOL-Entry U=1
 0000028C  00000120  DD          ?tpl?0001		; POOL-Entry U=1
 00000290  0007A120  DD          0x7A120		; POOL-Entry U=2
 00000294  000002AD  DD          task_rece_CAN?T		; POOL-Entry U=1
 00000298  00000800  DD          0x800		; POOL-Entry U=5
 0000029C  E0028008  DD          0xE0028008		; POOL-Entry U=1
 000002A0  E002800C  DD          0xE002800C		; POOL-Entry U=2
 000002A4  E0028004  DD          0xE0028004		; POOL-Entry U=2
 000002A8  00000F00  DD          0xF00		; POOL-Entry U=1

*** Disassembly of Segment '?PR?task_rece_CAN?T?CAN_Ex1':
 FILE: 'CAN_Ex1.c'
 000002AC          task_rece_CAN?T:  ; FUNCTION START
   99: void task_rece_CAN (void) __task  {
 000002AC  B084      SUB         R13,#0x10
 000002AE            ; SCOPE-START
  102:   for (;;)  {
LARM LINKER/LOCATER V2.32a                                                            03/15/2007  08:58:24  PAGE 9


 000002AE          L_9:
  105:     if (CAN_receive (1, &msg_rece, 0x00FF) == CAN_OK)  {
 000002AE  A900      ADD         R1,R13,#0x0
 000002B0  2001      MOV         R0,#0x1
 000002B2  22FF      MOV         R2,#0xFF
 000002B4  F000      BL          CAN_receive?T  ; T=0x0C09  (1)

⌨️ 快捷键说明

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