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

📄 main.lst

📁 针对arm开发板开发的can总线应用程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   000000A6   ....               LDR      R0,??DataTable26  ;; _Stdout
   \   000000A8   0028               CMP      R0,#+0
   \   000000AA   03D0               BEQ      ??main_6
   \   000000AC   3749               LDR      R1,??main_0+0x20  ;; `?<Constant "=====================...">`
   \   000000AE   ....               LDR      R0,??DataTable26  ;; _Stdout
   \   000000B0   ........           _BLF     fprintf,??fprintf??rT
    161          
    162            ///////////////////////////////////////////////////////////////////////////////////////////
    163            //  Init CAN0 and CAN1
    164            ///////////////////////////////////////////////////////////////////////////////////////////
    165          
    166            // Enable CAN0 and CAN1 PIOs
    167            AT91F_CAN0_CfgPIO();
   \                     ??main_6:
   \   000000B4   ........           _BLF     AT91F_CAN0_CfgPIO,??AT91F_CAN0_CfgPIO??rT
    168            AT91F_CAN1_CfgPIO();
   \   000000B8   ........           _BLF     AT91F_CAN1_CfgPIO,??AT91F_CAN1_CfgPIO??rT
    169            // Enable CAN0 and CAN1 Clocks
    170            AT91F_CAN0_CfgPMC();
   \   000000BC   ........           _BLF     AT91F_CAN0_CfgPMC,??AT91F_CAN0_CfgPMC??rT
    171            AT91F_CAN1_CfgPMC();
   \   000000C0   ........           _BLF     AT91F_CAN1_CfgPMC,??AT91F_CAN1_CfgPMC??rT
    172          
    173            // Enable CANs Transceivers
    174            AT91F_PIOA_CfgPMC();
   \   000000C4   ........           _BLF     AT91F_PIOA_CfgPMC,??AT91F_PIOA_CfgPMC??rT
    175            AT91F_PIO_CfgOutput(AT91C_BASE_PIOA,AT91B_CAN_TRANSCEIVER_RS) ;
   \   000000C8   8021               MOVS     R1,#+128
   \   000000CA   0904               LSLS     R1,R1,#+16       ;; #+8388608
   \   000000CC   3048               LDR      R0,??main_0+0x24  ;; 0xfffffffffffff400
   \   000000CE   ........           _BLF     AT91F_PIO_CfgOutput,??AT91F_PIO_CfgOutput??rT
    176            // Clear PA23 <=> Enable Transceiver Normal Mode (versus Standby mode)
    177            AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,AT91B_CAN_TRANSCEIVER_RS) ;
   \   000000D2   8021               MOVS     R1,#+128
   \   000000D4   0904               LSLS     R1,R1,#+16       ;; #+8388608
   \   000000D6   2E48               LDR      R0,??main_0+0x24  ;; 0xfffffffffffff400
   \   000000D8   ........           _BLF     AT91F_PIO_ClearOutput,??AT91F_PIO_ClearOutput??rT
    178          
    179            // Init CAN0 Interrupt Source Level
    180            AT91F_AIC_ConfigureIt(AT91C_BASE_AIC,                        	// CAN0 base address
    181                                  AT91C_ID_CAN0,                         	// CAN0 ID
    182                                  AT91C_AIC_PRIOR_HIGHEST,               	// Max priority
    183                                  AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, 	    // Level sensitive
    184                                  AT91F_CAN0_Handler);                    // C Handler
   \   000000DC   2D48               LDR      R0,??main_0+0x28  ;; AT91F_CAN0_Handler
   \   000000DE   01B4               PUSH     {R0}
   \   000000E0   0023               MOVS     R3,#+0
   \   000000E2   0722               MOVS     R2,#+7
   \   000000E4   0421               MOVS     R1,#+4
   \   000000E6   2C48               LDR      R0,??main_0+0x2C  ;; 0xfffffffffffff000
   \   000000E8   ........           _BLF     AT91F_AIC_ConfigureIt,??AT91F_AIC_ConfigureIt??rT
   \   000000EC   01B0               ADD      SP,SP,#+4
    185          
    186            AT91F_AIC_EnableIt(AT91C_BASE_AIC,AT91C_ID_CAN0);
   \   000000EE   0421               MOVS     R1,#+4
   \   000000F0   2948               LDR      R0,??main_0+0x2C  ;; 0xfffffffffffff000
   \   000000F2   ........           _BLF     AT91F_AIC_EnableIt,??AT91F_AIC_EnableIt??rT
    187          
    188            // Init CAN1 Interrupt Source Level
    189            AT91F_AIC_ConfigureIt(AT91C_BASE_AIC,                        	// CAN1 base address
    190                                  AT91C_ID_CAN1,                         	// CAN1 ID
    191                                  AT91C_AIC_PRIOR_HIGHEST,               	// Max priority
    192                                  AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, 	    // Level sensitive
    193                                  AT91F_CAN1_Handler);                    // C Handler
   \   000000F6   2948               LDR      R0,??main_0+0x30  ;; AT91F_CAN1_Handler
   \   000000F8   01B4               PUSH     {R0}
   \   000000FA   0023               MOVS     R3,#+0
   \   000000FC   0722               MOVS     R2,#+7
   \   000000FE   0521               MOVS     R1,#+5
   \   00000100   2548               LDR      R0,??main_0+0x2C  ;; 0xfffffffffffff000
   \   00000102   ........           _BLF     AT91F_AIC_ConfigureIt,??AT91F_AIC_ConfigureIt??rT
   \   00000106   01B0               ADD      SP,SP,#+4
    194          
    195            AT91F_AIC_EnableIt(AT91C_BASE_AIC,AT91C_ID_CAN1);             //AIC中断允许
   \   00000108   0521               MOVS     R1,#+5
   \   0000010A   2348               LDR      R0,??main_0+0x2C  ;; 0xfffffffffffff000
   \   0000010C   ........           _BLF     AT91F_AIC_EnableIt,??AT91F_AIC_EnableIt??rT
    196          
    197            // Cfg CAN Baudrate to 1Mbit/s => BRP = 5
    198            // We choose 8 Time Quanta (tCSC = 125ns): 8tCSC = tSYNC + tPRS + tPHS1 + tPHS2
    199            // Cfg PHASE1 PHASE2 PROPAG and SYNC segment
    200            // Delay of busdriver + delay of receiver circuit = 200ns
    201            // Delay of bus line considered negligible = 0ns
    202            // tPRS = 2*(200+0) = 400ns < 4tCSC => PROPAG = 3
    203            // tSYNC = 1tCSC =>  8tCSC = 1tCSC + 4tCSC + tPHS1 + tPHS2
    204            // tPHS1 + tPHS2 = 3tCSC => Phase Segment 2 = Max(IPT=2TQ,Phase Segment 1) = 2TQ => PHASE2 = 2-1 = 1 => PHASE1 = 0
    205            // tSJW = Min(4 TQ, Phase Segment 1) = 1TQ => SJW = 1-1 = 0
    206          
    207            //AT91F_CAN_CfgBaudrateReg(AT91C_BASE_CAN0,0x007c3066);       //config 1D3066= 100K,相互通讯的两个CAN的拨特率必须相同
    208            //AT91F_CAN_CfgBaudrateReg(AT91C_BASE_CAN1,0x007c3066);       //0x007c3066=24k
    209          
    210            AT91F_CAN_CfgBaudrateReg(AT91C_BASE_CAN0,0x004A3066);       //当 MCK 变为12mHz时 ,10K=0x004A3066
   \   00000110   2349               LDR      R1,??main_0+0x34  ;; 0x4a3066
   \   00000112   ....               LDR      R0,??DataTable27  ;; 0xfffffffffff80000
   \   00000114   ........           _BLF     AT91F_CAN_CfgBaudrateReg,??AT91F_CAN_CfgBaudrateReg??rT
    211            AT91F_CAN_CfgBaudrateReg(AT91C_BASE_CAN1,0x004A3066);
   \   00000118   2149               LDR      R1,??main_0+0x34  ;; 0x4a3066
   \   0000011A   ....               LDR      R0,??DataTable28  ;; 0xfffffffffff84000
   \   0000011C   ........           _BLF     AT91F_CAN_CfgBaudrateReg,??AT91F_CAN_CfgBaudrateReg??rT
    212            //当频率变为 6MHz时候 ,5K =0x004A3066
    213          
    214            ///////////////////////////////////////////////////////////////////////////////////////////
    215            //  Enter Main Application
    216            ///////////////////////////////////////////////////////////////////////////////////////////
    217          
    218            AT91F_BasicTestSuite();            //进行一次测试
   \   00000120   ........           _BLF     AT91F_BasicTestSuite,??AT91F_BasicTestSuite??rT
    219          
    220            for(;;)
    221            {
    222               /**以100K的速率由 CAN0->Mailbox0 向 Can1->Mailbox0 发送数据**/
    223          
    224                for(int n=0;n<=32767;)  //减慢发送速度,以使超级终端显示的数据让人眼睛看起来不闪烁
   \                     ??main_7:
   \   00000124   0020               MOVS     R0,#+0
   \                     ??main_8:
   \   00000126   8021               MOVS     R1,#+128
   \   00000128   0902               LSLS     R1,R1,#+8        ;; #+32768
   \   0000012A   8842               CMP      R0,R1
   \   0000012C   0BDA               BGE      ??main_9
    225                  for(int i=0;i<=30000;i++)
   \   0000012E   0021               MOVS     R1,#+0
   \                     ??main_10:
   \   00000130   1C4A               LDR      R2,??main_0+0x38  ;; 0x7531
   \   00000132   9142               CMP      R1,R2
   \   00000134   F7DA               BGE      ??main_8
    226                    for(int j=0;j<=12;j++)
   \   00000136   0022               MOVS     R2,#+0
   \                     ??main_11:
   \   00000138   0D2A               CMP      R2,#+13
   \   0000013A   02DA               BGE      ??main_12
    227                     n++ ;
   \   0000013C   401C               ADDS     R0,R0,#+1
   \   0000013E   521C               ADDS     R2,R2,#+1
   \   00000140   FAE7               B        ??main_11
   \                     ??main_12:
   \   00000142   491C               ADDS     R1,R1,#+1
   \   00000144   F4E7               B        ??main_10
    228          
    229                static int datas=1 ;
    230                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
    231                  datas=1 ;
   \   00000150   1548               LDR      R0,??main_0+0x3C  ;; ??datas
   \   00000152   0121               MOVS     R1,#+1
   \   00000154   0160               STR      R1,[R0, #+0]
    232                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   0800               MOVS     R0,R1
   \   0000015E   401C               ADDS     R0,R0,#+1
   \   00000160   1060               STR      R0,[R2, #+0]
   \   00000162   8020               MOVS     R0,#+128
   \   00000164   4000               LSLS     R0,R0,#+1        ;; #+256
   \   00000166   ........           _BLF     CanSendData,??CanSendData??rT
   \   0000016A   DBE7               B        ??main_7
   \                     ??main_0:
   \   0000016C   20FCFFFF           DC32     0xfffffffffffffc20
   \   00000170   01070000           DC32     0x701
   \   00000174   24FCFFFF           DC32     0xfffffffffffffc24
   \   00000178   30FCFFFF           DC32     0xfffffffffffffc30
   \   0000017C   001BB700           DC32     0xb71b00
   \   00000180   00F2FFFF           DC32     0xfffffffffffff200
   \   00000184   ........           DC32     `?<Constant "\\n\\n\\r==================...">`
   \   00000188   ........           DC32     `?<Constant "*****AT91SAM7A3 Basic...">`
   \   0000018C   ........           DC32     `?<Constant "=====================...">`
   \   00000190   00F4FFFF           DC32     0xfffffffffffff400
   \   00000194   ........           DC32     AT91F_CAN0_Handler
   \   00000198   00F0FFFF           DC32     0xfffffffffffff000
   \   0000019C   ........           DC32     AT91F_CAN1_Handler
   \   000001A0   66304A00           DC32     0x4a3066
   \   000001A4   31750000           DC32     0x7531
   \   000001A8   ........           DC32     ??datas
   \   000001AC   FF7F0000           DC32     0x7fff
    233             }
    234          }

   \                                 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   25640000           DC8      "%d",+0

   \                                 In segment CODE, align 4, keep-with-next
   \                     ??DataTable26:
   \   00000000   ........           DC32     _Stdout

   \                                 In segment CODE, align 4, keep-with-next
   \                     ??DataTable27:
   \   00000000   0000F8FF           DC32     0xfffffffffff80000

   \             

⌨️ 快捷键说明

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