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

📄 main.lst

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

   \                                 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   ........           DC32        `?<Constant "%d">`

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

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

   \                                 In segment CODE, align 4, keep-with-next
   \                     ??DataTable28:
   \   00000000   0040F8FF           DC32        0xfff84000

   \                                 In segment DATA_ID, align 4, align-sorted
   \                     `?<Initializer for datas>`:
   \   00000000   01000000           DC32 1

   \                                 In segment DATA_C, align 4, align-sorted
   \                     `?<Constant "______Interrupt now i...">`:
   \   00000000   5F5F5F5F5F5F       DC8 5FH, 5FH, 5

⌨️ 快捷键说明

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