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

📄 interrupt_timer.lst

📁 AT91SAM7X256芯片底层驱动源码。在IAR430环境下编译
💻 LST
📖 第 1 页 / 共 2 页
字号:
   \                                 In segment CODE_I, align 4, keep-with-next
   \                     ?Subroutine4:
   \   00000000   0842               TST         R0,R1
   \   00000002   01D0               BEQ         ??Subroutine4_1
   \   00000004   ....               LDR         R0,??DataTable2    ;; 0xfffff634
   \   00000006   00E0               B           ??Subroutine4_2
   \                     ??Subroutine4_1:
   \   00000008   ....               LDR         R0,??DataTable3    ;; 0xfffff630
   \                     ??Subroutine4_2:
   \   0000000A   0160               STR         R1,[R0, #+0]
   \   0000000C   00B0               ADD         SP,#+0
   \   0000000E   7047               BX          LR                 ;; return
   \                     ??Subroutine4_0:
   \   00000010   6000FAFF           DC32        0xfffa0060
   \   00000014   ........           DC32        count_timer1_interrupt
    100          //*----------------------------------------------------------------------------
    101          //* Function Name       : timer1_c_irq_handler
    102          //* Object              : C handler interrupt function calAT91B_LED by the interrupts
    103          //*                       assembling routine
    104          //* Output Parameters   : increment count_timer1_interrupt
    105          //*----------------------------------------------------------------------------

   \                                 In segment CODE_I, align 4, keep-with-next
    106          __ramfunc void timer1_c_irq_handler(void)
    107          {
    108          	AT91PS_TC TC_pt = AT91C_BASE_TC1;
    109              unsigned int dummy;
    110              //* AcknowAT91B_LEDge interrupt status
    111              dummy = TC_pt->TC_SR;
   \                     timer1_c_irq_handler:
   \   00000000   ....               LDR         R0,??Subroutine4_0  ;; 0xfffa0060
   \   00000002   0068               LDR         R0,[R0, #+0]
    112              //* Suppress warning variable "dummy" was set but never used
    113              dummy = dummy;
    114              count_timer1_interrupt++;
   \   00000004   ....               LDR         R0,??Subroutine4_0+0x4  ;; count_timer1_interrupt
   \   00000006   0168               LDR         R1,[R0, #+0]
   \   00000008   491C               ADD         R1,R1,#+0x1
   \   0000000A   0160               STR         R1,[R0, #+0]
    115          
    116              //* Read the output state
    117              if ( (AT91F_PIO_GetInput(AT91C_BASE_PIOB) & AT91B_LED4 ) == AT91B_LED4 )
   \   0000000C   ....               LDR         R0,??DataTable1    ;; 0xfffff63c
   \   0000000E   0068               LDR         R0,[R0, #+0]
   \   00000010   8021               MOV         R1,#+0x80
   \   00000012   C903               LSL         R1,R1,#+0xF        ;; #+0x400000
   \   00000014                      REQUIRE ?Subroutine4
   \   00000014                      ;; // Fall through to label ?Subroutine4
    118              {
    119                  AT91F_PIO_ClearOutput( AT91C_BASE_PIOB, AT91B_LED4 );
    120              }
    121              else
    122              {
    123                  AT91F_PIO_SetOutput( AT91C_BASE_PIOB, AT91B_LED4 );
    124              }
    125          }
    126          //*-------------------------- External Function -------------------------------
    127          
    128          //*----------------------------------------------------------------------------
    129          //* Function Name       : timer_init
    130          //* Object              : Init timer counter
    131          //* Input Parameters    : none
    132          //* Output Parameters   : TRUE
    133          //*----------------------------------------------------------------------------

   \                                 In segment CODE, align 4, keep-with-next
    134          void timer_init ( void )
    135          //* Begin
    136          {
   \                     timer_init:
   \   00000000   F0B5               PUSH        {R4-R7,LR}
    137              //init the timer interrupt counter
    138              count_timer0_interrupt=0;
   \   00000002   0020               MOV         R0,#+0
   \   00000004   1749               LDR         R1,??timer_init_0  ;; count_timer0_interrupt
   \   00000006   0860               STR         R0,[R1, #+0]
    139              count_timer1_interrupt=0;
   \   00000008   1749               LDR         R1,??timer_init_0+0x4  ;; count_timer1_interrupt
   \   0000000A   0860               STR         R0,[R1, #+0]
    140          
    141              //* Open timer0
    142          	AT91F_TC_Open(AT91C_BASE_TC0,TC_CLKS_MCK1024,AT91C_ID_TC0);
   \   0000000C   174C               LDR         R4,??timer_init_0+0x8  ;; 0xfffa0000
   \   0000000E   0C22               MOV         R2,#+0xC
   \   00000010   0421               MOV         R1,#+0x4
   \   00000012   201C               MOV         R0,R4
   \   00000014   ........           BL          AT91F_TC_Open
   \   00000018   1548               LDR         R0,??timer_init_0+0xC  ;; timer0_c_irq_handler
   \   0000001A   01B4               PUSH        {R0}
   \   0000001C   0023               MOV         R3,#+0
   \   0000001E   0122               MOV         R2,#+0x1
   \   00000020   0C21               MOV         R1,#+0xC
   \   00000022   1448               LDR         R0,??timer_init_0+0x10  ;; 0xfffff000
    143          
    144              //* Open Timer 0 interrupt
    145          	AT91F_AIC_ConfigureIt ( AT91C_BASE_AIC, AT91C_ID_TC0, TIMER0_INTERRUPT_LEVEL,AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, timer0_c_irq_handler);
   \   00000024   ........           _BLF        AT91F_AIC_ConfigureIt,AT91F_AIC_ConfigureIt??rT
    146          	AT91C_BASE_TC0->TC_IER = AT91C_TC_CPCS;  //  IRQ enable CPC
   \   00000028   1026               MOV         R6,#+0x10
   \   0000002A   1348               LDR         R0,??timer_init_0+0x14  ;; 0xfffa0024
   \   0000002C   0660               STR         R6,[R0, #+0]
    147          	AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_TC0);
   \   0000002E   134F               LDR         R7,??timer_init_0+0x18  ;; 0xfffff120
   \   00000030   3002               LSL         R0,R6,#+0x8
   \   00000032   3860               STR         R0,[R7, #+0]
    148          
    149              //* Open timer1
    150          	AT91F_TC_Open(AT91C_BASE_TC1,TC_CLKS_MCK128,AT91C_ID_TC1);
   \   00000034   124D               LDR         R5,??timer_init_0+0x1C  ;; 0xfffa0040
   \   00000036   0D22               MOV         R2,#+0xD
   \   00000038   0321               MOV         R1,#+0x3
   \   0000003A   281C               MOV         R0,R5
   \   0000003C   ........           BL          AT91F_TC_Open
    151          
    152              //* Open Timer 1 interrupt
    153          	AT91F_AIC_ConfigureIt ( AT91C_BASE_AIC, AT91C_ID_TC1, TIMER1_INTERRUPT_LEVEL,AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, timer1_c_irq_handler);
   \   00000040   1048               LDR         R0,??timer_init_0+0x20  ;; timer1_c_irq_handler
   \   00000042   01B4               PUSH        {R0}
   \   00000044   0023               MOV         R3,#+0
   \   00000046   0722               MOV         R2,#+0x7
   \   00000048   0D21               MOV         R1,#+0xD
   \   0000004A   0A48               LDR         R0,??timer_init_0+0x10  ;; 0xfffff000
   \   0000004C   ........           _BLF        AT91F_AIC_ConfigureIt,AT91F_AIC_ConfigureIt??rT
    154          	AT91C_BASE_TC1->TC_IER  = AT91C_TC_CPCS;  //  IRQ enable CPC
   \   00000050   0D48               LDR         R0,??timer_init_0+0x24  ;; 0xfffa0064
   \   00000052   0660               STR         R6,[R0, #+0]
    155          	AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_TC1);
   \   00000054   7002               LSL         R0,R6,#+0x9
   \   00000056   3860               STR         R0,[R7, #+0]
    156          
    157          
    158              //* Start timer0
    159                  AT91C_BASE_TC0->TC_CCR = AT91C_TC_SWTRG ;
   \   00000058   0420               MOV         R0,#+0x4
   \   0000005A   2060               STR         R0,[R4, #+0]
    160          
    161              //* Start timer1
    162                  AT91C_BASE_TC1->TC_CCR = AT91C_TC_SWTRG ;
   \   0000005C   2860               STR         R0,[R5, #+0]
    163          
    164          //* End
    165          }
   \   0000005E   FCBC               POP         {R2-R7}
   \   00000060   01BC               POP         {R0}
   \   00000062   0047               BX          R0                 ;; return
   \                     ??timer_init_0:
   \   00000064   ........           DC32        count_timer0_interrupt
   \   00000068   ........           DC32        count_timer1_interrupt
   \   0000006C   0000FAFF           DC32        0xfffa0000
   \   00000070   ........           DC32        timer0_c_irq_handler
   \   00000074   00F0FFFF           DC32        0xfffff000
   \   00000078   2400FAFF           DC32        0xfffa0024
   \   0000007C   20F1FFFF           DC32        0xfffff120
   \   00000080   4000FAFF           DC32        0xfffa0040
   \   00000084   ........           DC32        timer1_c_irq_handler
   \   00000088   6400FAFF           DC32        0xfffa0064

   \                                 In segment CODE_I, align 4, keep-with-next
   \                     ??DataTable1:
   \   00000000   3CF6FFFF           DC32        0xfffff63c

   \                                 In segment CODE_I, align 4, keep-with-next
   \                     ??DataTable2:
   \   00000000   34F6FFFF           DC32        0xfffff634

   \                                 In segment CODE_I, align 4, keep-with-next
   \                     ??DataTable3:
   \   00000000   30F6FFFF           DC32        0xfffff630

   Maximum stack usage in bytes:

     Function              CSTACK
     --------              ------
     AT91F_AIC_ConfigureIt    20
     AT91F_TC_Open             4
     timer0_c_irq_handler      4
     timer1_c_irq_handler      4
     timer_init               28


   Segment part sizes:

     Function/Label        Bytes
     --------------        -----
     AT91F_AIC_ConfigureIt   44
     AT91F_TC_Open           36
     timer0_c_irq_handler    32
     ?Subroutine4            24
     timer1_c_irq_handler    20
     timer_init             140
     ??DataTable1             4
     ??DataTable2             4
     ??DataTable3             4
      Others                 60

 
 252 bytes in segment CODE
 104 bytes in segment CODE_I
  12 bytes in segment INITTAB
 
 264 bytes of CODE memory (+ 104 bytes shared)

Errors: none
Warnings: none

⌨️ 快捷键说明

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