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

📄 main.lst

📁 Atmel arm can总线的应用程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
     84            }
     85          
     86          }
   \                     ??AT91F_CAN1_Handler_8:
   \   000000A0   01B0               ADD         SP,#+0x4
   \   000000A2   70BC               POP         {R4-R6}
   \   000000A4   01BC               POP         {R0}
   \   000000A6   0047               BX          R0                 ;; return
   \                     ??AT91F_CAN1_Handler_0:
   \   000000A8   0042F8FF           DC32        0xfff84200
   \   000000AC   ........           DC32        `?<Constant "\\r\\n">`
   \   000000B0   ........           DC32        `?<Constant "\\r\\n*******************...">`
   \   000000B4   1C42F8FF           DC32        0xfff8421c
   \   000000B8   ........           DC32        testCAN1
     87          
     88          //*--------------------------------------------------------------------------------------
     89          //* Function Name       : Main
     90          //* Object              : Software entry point
     91          //*--------------------------------------------------------------------------------------

   \                                 In segment CODE, align 4, keep-with-next
     92          void main()
     93          {
   \                     main:
   \   00000000   00B5               PUSH        {LR}
     94            ////////////////////////////////////////////////////////////////////////////////////////////////////
     95            //  DBGU Init
     96            /////////////////////////////////////////////////////////////////////////////////////////////////////
     97          
     98            // Enable DBGU Clock
     99            //AT91F_DBGU_CfgPMC();  // DBGU is always clocked
    100            // Open PIO for DBGU
    101            AT91F_DBGU_CfgPIO();
   \   00000002   ........           _BLF        AT91F_DBGU_CfgPIO,AT91F_DBGU_CfgPIO??rT
    102            AT91F_US_Configure ((AT91PS_USART) AT91C_BASE_DBGU,
    103                                AT91C_MASTER_CLOCK,
    104                                AT91C_US_ASYNC_MODE,  	// mode Register to be programmed
    105                                AT91C_BAUDRATE_115200,	// baudrate to be programmed
    106                                0);                   	// timeguard to be programmed
   \   00000006   0020               MOV         R0,#+0
   \   00000008   01B4               PUSH        {R0}
   \   0000000A   E123               MOV         R3,#+0xE1
   \   0000000C   5B02               LSL         R3,R3,#+0x9        ;; #+0x1C200
   \   0000000E   8C22               MOV         R2,#+0x8C
   \   00000010   1201               LSL         R2,R2,#+0x4        ;; #+0x8C0
   \   00000012   3449               LDR         R1,??main_0        ;; 0x2dc6c00
   \   00000014   3448               LDR         R0,??main_0+0x4    ;; 0xfffff200
   \   00000016   ........           _BLF        AT91F_US_Configure,AT91F_US_Configure??rT
   \   0000001A   01B0               ADD         SP,#+0x4
    107            // Enable Transmitter
    108            AT91F_US_EnableTx((AT91PS_USART) AT91C_BASE_DBGU);
   \   0000001C   3248               LDR         R0,??main_0+0x4    ;; 0xfffff200
   \   0000001E   ........           _BLF        AT91F_US_EnableTx,AT91F_US_EnableTx??rT
    109          
    110            TRACE_INFO("\n\n\r======================================\n\r");
   \   00000022   ....               LDR         R0,??DataTable26   ;; _Stdout
   \   00000024   0028               CMP         R0,#+0
   \   00000026   03D0               BEQ         ??main_1
   \   00000028   3049               LDR         R1,??main_0+0x8    ;; `?<Constant "\\n\\n\\r==================...">`
   \   0000002A   ....               LDR         R0,??DataTable26   ;; _Stdout
   \   0000002C   ........           _BLF        fprintf,fprintf??rT
    111            TRACE_INFO("AT91SAM7A3 Basic CAN Test\n\r");
   \                     ??main_1:
   \   00000030   ....               LDR         R0,??DataTable26   ;; _Stdout
   \   00000032   0028               CMP         R0,#+0
   \   00000034   03D0               BEQ         ??main_2
   \   00000036   2E49               LDR         R1,??main_0+0xC    ;; `?<Constant "AT91SAM7A3 Basic CAN ...">`
   \   00000038   ....               LDR         R0,??DataTable26   ;; _Stdout
   \   0000003A   ........           _BLF        fprintf,fprintf??rT
    112            TRACE_INFO("======================================\n\r");
   \                     ??main_2:
   \   0000003E   ....               LDR         R0,??DataTable26   ;; _Stdout
   \   00000040   0028               CMP         R0,#+0
   \   00000042   03D0               BEQ         ??main_3
   \   00000044   2B49               LDR         R1,??main_0+0x10   ;; `?<Constant "=====================...">`
   \   00000046   ....               LDR         R0,??DataTable26   ;; _Stdout
   \   00000048   ........           _BLF        fprintf,fprintf??rT
    113          
    114            ///////////////////////////////////////////////////////////////////////////////////////////
    115            //  Init CAN0 and CAN1
    116            ///////////////////////////////////////////////////////////////////////////////////////////
    117          
    118            // Enable CAN0 and CAN1 PIOs
    119            AT91F_CAN0_CfgPIO();
   \                     ??main_3:
   \   0000004C   ........           _BLF        AT91F_CAN0_CfgPIO,AT91F_CAN0_CfgPIO??rT
    120            AT91F_CAN1_CfgPIO();
   \   00000050   ........           _BLF        AT91F_CAN1_CfgPIO,AT91F_CAN1_CfgPIO??rT
    121            // Enable CAN0 and CAN1 Clocks
    122            AT91F_CAN0_CfgPMC();
   \   00000054   ........           _BLF        AT91F_CAN0_CfgPMC,AT91F_CAN0_CfgPMC??rT
    123            AT91F_CAN1_CfgPMC();
   \   00000058   ........           _BLF        AT91F_CAN1_CfgPMC,AT91F_CAN1_CfgPMC??rT
    124          
    125            // Enable CANs Transceivers
    126            AT91F_PIOA_CfgPMC();
   \   0000005C   ........           _BLF        AT91F_PIOA_CfgPMC,AT91F_PIOA_CfgPMC??rT
    127            AT91F_PIO_CfgOutput(AT91C_BASE_PIOA,AT91B_CAN_TRANSCEIVER_RS) ;
   \   00000060   8021               MOV         R1,#+0x80
   \   00000062   0904               LSL         R1,R1,#+0x10       ;; #+0x800000
   \   00000064   2448               LDR         R0,??main_0+0x14   ;; 0xfffff400
   \   00000066   ........           _BLF        AT91F_PIO_CfgOutput,AT91F_PIO_CfgOutput??rT
    128            // Clear PA23 <=> Enable Transceiver Normal Mode (versus Standby mode)
    129            AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,AT91B_CAN_TRANSCEIVER_RS) ;
   \   0000006A   8021               MOV         R1,#+0x80
   \   0000006C   0904               LSL         R1,R1,#+0x10       ;; #+0x800000
   \   0000006E   2248               LDR         R0,??main_0+0x14   ;; 0xfffff400
   \   00000070   ........           _BLF        AT91F_PIO_ClearOutput,AT91F_PIO_ClearOutput??rT
    130          
    131            // Init CAN0 Interrupt Source Level
    132            AT91F_AIC_ConfigureIt(AT91C_BASE_AIC,                        	// CAN0 base address
    133                                  AT91C_ID_CAN0,                         	// CAN0 ID
    134                                  AT91C_AIC_PRIOR_HIGHEST,               	// Max priority
    135                                  AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, 	    // Level sensitive
    136                                  AT91F_CAN0_Handler);                    // C Handler
   \   00000074   2148               LDR         R0,??main_0+0x18   ;; AT91F_CAN0_Handler
   \   00000076   01B4               PUSH        {R0}
   \   00000078   0023               MOV         R3,#+0
   \   0000007A   0722               MOV         R2,#+0x7
   \   0000007C   0421               MOV         R1,#+0x4
   \   0000007E   2048               LDR         R0,??main_0+0x1C   ;; 0xfffff000
   \   00000080   ........           _BLF        AT91F_AIC_ConfigureIt,AT91F_AIC_ConfigureIt??rT
   \   00000084   01B0               ADD         SP,#+0x4
    137          
    138            AT91F_AIC_EnableIt(AT91C_BASE_AIC,AT91C_ID_CAN0);
   \   00000086   0421               MOV         R1,#+0x4
   \   00000088   1D48               LDR         R0,??main_0+0x1C   ;; 0xfffff000
   \   0000008A   ........           _BLF        AT91F_AIC_EnableIt,AT91F_AIC_EnableIt??rT
    139          
    140            // Init CAN1 Interrupt Source Level
    141            AT91F_AIC_ConfigureIt(AT91C_BASE_AIC,                        	// CAN1 base address
    142                                  AT91C_ID_CAN1,                         	// CAN1 ID
    143                                  AT91C_AIC_PRIOR_HIGHEST,               	// Max priority
    144                                  AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, 	    // Level sensitive
    145                                  AT91F_CAN1_Handler);                    // C Handler
   \   0000008E   1D48               LDR         R0,??main_0+0x20   ;; AT91F_CAN1_Handler
   \   00000090   01B4               PUSH        {R0}
   \   00000092   0023               MOV         R3,#+0
   \   00000094   0722               MOV         R2,#+0x7
   \   00000096   0521               MOV         R1,#+0x5
   \   00000098   1948               LDR         R0,??main_0+0x1C   ;; 0xfffff000
   \   0000009A   ........           _BLF        AT91F_AIC_ConfigureIt,AT91F_AIC_ConfigureIt??rT
   \   0000009E   01B0               ADD         SP,#+0x4
    146          
    147            AT91F_AIC_EnableIt(AT91C_BASE_AIC,AT91C_ID_CAN1);             //AIC中断允许
   \   000000A0   0521               MOV         R1,#+0x5
   \   000000A2   1748               LDR         R0,??main_0+0x1C   ;; 0xfffff000
   \   000000A4   ........           _BLF        AT91F_AIC_EnableIt,AT91F_AIC_EnableIt??rT
    148          
    149            // Cfg CAN Baudrate to 1Mbit/s => BRP = 5
    150            // We choose 8 Time Quanta (tCSC = 125ns): 8tCSC = tSYNC + tPRS + tPHS1 + tPHS2
    151            // Cfg PHASE1 PHASE2 PROPAG and SYNC segment
    152            // Delay of busdriver + delay of receiver circuit = 200ns
    153            // Delay of bus line considered negligible = 0ns
    154            // tPRS = 2*(200+0) = 400ns < 4tCSC => PROPAG = 3
    155            // tSYNC = 1tCSC =>  8tCSC = 1tCSC + 4tCSC + tPHS1 + tPHS2
    156            // tPHS1 + tPHS2 = 3tCSC => Phase Segment 2 = Max(IPT=2TQ,Phase Segment 1) = 2TQ => PHASE2 = 2-1 = 1 => PHASE1 = 0
    157            // tSJW = Min(4 TQ, Phase Segment 1) = 1TQ => SJW = 1-1 = 0
    158            AT91F_CAN_CfgBaudrateReg(AT91C_BASE_CAN0,0x00ff3066);       //config 1D3066= 100K,相互通讯的两个CAN的拨特率必须相同
   \   000000A8   1749               LDR         R1,??main_0+0x24   ;; 0xff3066
   \   000000AA   ....               LDR         R0,??DataTable27   ;; 0xfff80000
   \   000000AC   ........           _BLF        AT91F_CAN_CfgBaudrateReg,AT91F_CAN_CfgBaudrateReg??rT
    159            AT91F_CAN_CfgBaudrateReg(AT91C_BASE_CAN1,0x00ff3066);       //0x007c3066=24k 。1M 时,BR=0x00023544 ;
   \   000000B0   1549               LDR         R1,??main_0+0x24   ;; 0xff3066
   \   000000B2   ....               LDR         R0,??DataTable28   ;; 0xfff84000
   \   000000B4   ........           _BLF        AT91F_CAN_CfgBaudrateReg,AT91F_CAN_CfgBaudrateReg??rT
    160          
    161            ///////////////////////////////////////////////////////////////////////////////////////////
    162            //  Enter Main Application
    163            ///////////////////////////////////////////////////////////////////////////////////////////
    164          
    165            AT91F_BasicTestSuite();            //进行一次测试
   \   000000B8   ........           _BLF        AT91F_BasicTestSuite,AT91F_BasicTestSuite??rT
    166          
    167            for(;;)
    168            {
    169               /**以100K的速率由 CAN0->Mailbox0 向 Can1->Mailbox0 发送数据**/
    170          
    171               /* for(int n=0;n<=32767;)  //减慢发送速度,以使超级终端显示的数据让人眼睛看起来不闪烁
    172                  for(int i=0;i<=30000;i++)
    173                    for(int j=0;j<=100;j++)
    174                    n++ ;
    175               */
    176                static int datas=1 ;
    177                if(datas>=32767)
   \                     ??main_4:
   \   000000BC   1348               LDR         R0,??main_0+0x28   ;; ??datas
   \   000000BE   0068               LDR         R0,[R0, #+0]
   \   000000C0   1349               LDR         R1,??main_0+0x2C   ;; 0x7fff
   \   000000C2   8842               CMP         R0,R1
   \   000000C4   02DB               BLT         ??main_5
    178                  datas=1 ;
   \   000000C6   1148               LDR         R0,??main_0+0x28   ;; ??datas
   \   000000C8   0121               MOV         R1,#+0x1
   \   000000CA   0160               STR         R1,[R0, #+0]
    179                CanSendData((unsigned)(0x100),(unsigned)datas++) ;
   \                     ??main_5:
   \   000000CC   0F48               LDR         R0,??main_0+0x28   ;; ??datas
   \   000000CE   0168               LDR         R1,[R0, #+0]
   \   000000D0   0E4A               LDR         R2,??main_0+0x28   ;; ??datas
   \   000000D2   081C               MOV         R0,R1
   \   000000D4   401C               ADD         R0,#+0x1
   \   000000D6   1060               STR         R0,[R2, #+0]
   \   000000D8   8020               MOV         R0,#+0x80
   \   000000DA   4000               LSL         R0,R0,#+0x1        ;; #+0x100
   \   000000DC   ........           _BLF        CanSendData,CanSendData??rT
   \   000000E0   ECE7               B           ??main_4
   \   000000E2   C046               NOP         
   \                     ??main_0:
   \   000000E4   006CDC02           DC32        0x2dc6c00
   \   000000E8   00F2FFFF           DC32        0xfffff200
   \   000000EC   ........           DC32        `?<Constant "\\n\\n\\r==================...">`

⌨️ 快捷键说明

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