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

📄 pio_it.lst

📁 Tried to make CAN logger on AT91sam7X-ek, but have no idea how to implement FATFs... -( I m just a
💻 LST
📖 第 1 页 / 共 3 页
字号:
   \   0000006C   0050C5E1           BIC      R5,R5,R0
    124                          }
    125                      }
    126                      i++;
   \                     ??PioInterruptHandler_4:
   \   00000070   016086E2           ADD      R6,R6,#+1
   \   00000074   087087E2           ADD      R7,R7,#+8
    127                  }
   \   00000078   000055E3           CMP      R5,#+0
   \   0000007C   E7FFFF1A           BNE      ??PioInterruptHandler_1
    128              }
    129          }
   \                     ??PioInterruptHandler_0:
   \   00000080   F140BDE8           POP      {R0,R4-R7,LR}
   \   00000084   1EFF2FE1           BX       LR               ;; return
    130          
    131          //------------------------------------------------------------------------------
    132          /// Generic PIO interrupt handler. Single entry point for interrupts coming
    133          /// from any PIO controller (PIO A, B, C ...). Dispatches the interrupt to
    134          /// the user-configured handlers.
    135          //------------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    136          static void InterruptHandler(void)
    137          {
   \                     InterruptHandler:
   \   00000000   00502DE9           PUSH     {R12,LR}
    138          #if defined(AT91C_ID_PIOA)
    139              // Treat PIOA interrupts
    140              PioInterruptHandler(AT91C_ID_PIOA, AT91C_BASE_PIOA);
   \   00000004   FF10E0E3           MVN      R1,#+255
   \   00000008   B01EC1E3           BIC      R1,R1,#0xB00
   \   0000000C   0200A0E3           MOV      R0,#+2
   \   00000010   ........           BL       PioInterruptHandler
    141          #endif
    142          
    143          #if defined(AT91C_ID_PIOB)
    144              // Treat PIOB interrupts
    145              PioInterruptHandler(AT91C_ID_PIOB, AT91C_BASE_PIOB);
   \   00000014   FF10E0E3           MVN      R1,#+255
   \   00000018   901EC1E3           BIC      R1,R1,#0x900
   \   0000001C   0300A0E3           MOV      R0,#+3
   \   00000020   0440BDE8           POP      {R2,LR}
   \   00000024   ........           B        PioInterruptHandler  ;; tailcall
    146          #endif
    147          
    148          #if defined(AT91C_ID_PIOC)
    149              // Treat PIOC interrupts
    150              PioInterruptHandler(AT91C_ID_PIOC, AT91C_BASE_PIOC);
    151          #endif
    152          
    153          #if defined(AT91C_ID_PIOD)
    154              // Treat PIOD interrupts
    155              PioInterruptHandler(AT91C_ID_PIOD, AT91C_BASE_PIOD);
    156          #endif
    157          
    158          #if defined(AT91C_ID_PIOE)
    159              // Treat PIOE interrupts
    160              PioInterruptHandler(AT91C_ID_PIOE, AT91C_BASE_PIOE);
    161          #endif
    162          
    163          #if defined(AT91C_ID_PIOABCD)
    164              // Treat PIOABCD interrupts
    165              #if !defined(AT91C_ID_PIOA)
    166                  PioInterruptHandler(AT91C_ID_PIOABCD, AT91C_BASE_PIOA);
    167              #endif
    168              #if !defined(AT91C_ID_PIOB)
    169                  PioInterruptHandler(AT91C_ID_PIOABCD, AT91C_BASE_PIOB);
    170              #endif
    171              #if !defined(AT91C_ID_PIOC)
    172                  PioInterruptHandler(AT91C_ID_PIOABCD, AT91C_BASE_PIOC);
    173              #endif
    174              #if !defined(AT91C_ID_PIOD)
    175                  PioInterruptHandler(AT91C_ID_PIOABCD, AT91C_BASE_PIOD);
    176              #endif
    177          #endif
    178          
    179          #if defined(AT91C_ID_PIOABCDE)
    180              // Treat PIOABCDE interrupts
    181              #if !defined(AT91C_ID_PIOA)
    182                  PioInterruptHandler(AT91C_ID_PIOABCDE, AT91C_BASE_PIOA);
    183              #endif
    184              #if !defined(AT91C_ID_PIOB)
    185                  PioInterruptHandler(AT91C_ID_PIOABCDE, AT91C_BASE_PIOB);
    186              #endif
    187              #if !defined(AT91C_ID_PIOC)
    188                  PioInterruptHandler(AT91C_ID_PIOABCDE, AT91C_BASE_PIOC);
    189              #endif
    190              #if !defined(AT91C_ID_PIOD)
    191                  PioInterruptHandler(AT91C_ID_PIOABCDE, AT91C_BASE_PIOD);
    192              #endif
    193              #if !defined(AT91C_ID_PIOE)
    194                  PioInterruptHandler(AT91C_ID_PIOABCDE, AT91C_BASE_PIOE);
    195              #endif
    196          #endif
    197          
    198          #if defined(AT91C_ID_PIOCDE)
    199              // Treat PIOCDE interrupts
    200              #if !defined(AT91C_ID_PIOC)
    201                  PioInterruptHandler(AT91C_ID_PIOCDE, AT91C_BASE_PIOC);
    202              #endif
    203              #if !defined(AT91C_ID_PIOD)
    204                  PioInterruptHandler(AT91C_ID_PIOCDE, AT91C_BASE_PIOD);
    205              #endif
    206              #if !defined(AT91C_ID_PIOE)
    207                  PioInterruptHandler(AT91C_ID_PIOCDE, AT91C_BASE_PIOE);
    208              #endif
    209          #endif
    210          }
    211          
    212          //------------------------------------------------------------------------------
    213          //         Global functions
    214          //------------------------------------------------------------------------------
    215          
    216          //------------------------------------------------------------------------------
    217          /// Initializes the PIO interrupt management logic. The desired priority of PIO
    218          /// interrupts must be provided. Calling this function multiple times result in
    219          /// the reset of currently configured interrupts.
    220          /// \param priority  PIO controller interrupts priority.
    221          //------------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    222          void PIO_InitializeInterrupts(unsigned int priority)
    223          {
   \                     PIO_InitializeInterrupts:
   \   00000000   10402DE9           PUSH     {R4,LR}
   \   00000004   0040A0E1           MOV      R4,R0
    224              TRACE_DEBUG("PIO_Initialize()\n\r");
    225          
    226              SANITY_CHECK((priority & ~AT91C_AIC_PRIOR) == 0);
   \   00000008   0700D4E3           BICS     R0,R4,#0x7
   \   0000000C   0000000A           BEQ      ??PIO_InitializeInterrupts_0
   \                     ??PIO_InitializeInterrupts_1:
   \   00000010   FEFFFFEA           B        ??PIO_InitializeInterrupts_1
    227          
    228              // Reset sources
    229              numSources = 0;
   \                     ??PIO_InitializeInterrupts_0:
   \   00000014   ........           LDR      R0,??DataTable10  ;; numSources
   \   00000018   0010A0E3           MOV      R1,#+0
   \   0000001C   001080E5           STR      R1,[R0, #+0]
    230          
    231          #ifdef AT91C_ID_PIOA
    232              // Configure PIO interrupt sources
    233              TRACE_DEBUG("PIO_Initialize: Configuring PIOA\n\r");
    234              AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOA;
   \   00000020   EF00E0E3           MVN      R0,#+239
   \   00000024   C00FC0E3           BIC      R0,R0,#0x300
   \   00000028   0410A0E3           MOV      R1,#+4
   \   0000002C   001080E5           STR      R1,[R0, #+0]
    235              AT91C_BASE_PIOA->PIO_ISR;
   \   00000030   B300E0E3           MVN      R0,#+179
   \   00000034   B00EC0E3           BIC      R0,R0,#0xB00
   \   00000038   000090E5           LDR      R0,[R0, #+0]
    236              AT91C_BASE_PIOA->PIO_IDR = 0xFFFFFFFF;
   \   0000003C   BB00E0E3           MVN      R0,#+187
   \   00000040   B00EC0E3           BIC      R0,R0,#0xB00
   \   00000044   0010E0E3           MVN      R1,#+0
   \   00000048   001080E5           STR      R1,[R0, #+0]
    237              AIC_ConfigureIT(AT91C_ID_PIOA, priority, InterruptHandler);
   \   0000004C   58209FE5           LDR      R2,??PIO_InitializeInterrupts_2  ;; InterruptHandler
   \   00000050   0410A0E1           MOV      R1,R4
   \   00000054   0200A0E3           MOV      R0,#+2
   \   00000058   ........           BL       AIC_ConfigureIT
    238              AIC_EnableIT(AT91C_ID_PIOA);
   \   0000005C   0200A0E3           MOV      R0,#+2
   \   00000060   ........           BL       AIC_EnableIT
    239          #endif
    240          
    241          #ifdef AT91C_ID_PIOB
    242              TRACE_DEBUG("PIO_Initialize: Configuring PIOB\n\r");
    243              AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOB;
   \   00000064   EF00E0E3           MVN      R0,#+239
   \   00000068   C00FC0E3           BIC      R0,R0,#0x300
   \   0000006C   0810A0E3           MOV      R1,#+8
   \   00000070   001080E5           STR      R1,[R0, #+0]
    244              AT91C_BASE_PIOB->PIO_ISR;
   \   00000074   B300E0E3           MVN      R0,#+179
   \   00000078   900EC0E3           BIC      R0,R0,#0x900
   \   0000007C   000090E5           LDR      R0,[R0, #+0]
    245              AT91C_BASE_PIOB->PIO_IDR = 0xFFFFFFFF;
   \   00000080   BB00E0E3           MVN      R0,#+187
   \   00000084   900EC0E3           BIC      R0,R0,#0x900
   \   00000088   0010E0E3           MVN      R1,#+0
   \   0000008C   001080E5           STR      R1,[R0, #+0]
    246              AIC_ConfigureIT(AT91C_ID_PIOB, priority, InterruptHandler);
   \   00000090   14209FE5           LDR      R2,??PIO_InitializeInterrupts_2  ;; InterruptHandler
   \   00000094   0410A0E1           MOV      R1,R4
   \   00000098   0300A0E3           MOV      R0,#+3
   \   0000009C   ........           BL       AIC_ConfigureIT
    247              AIC_EnableIT(AT91C_ID_PIOB);
   \   000000A0   0300A0E3           MOV      R0,#+3
   \   000000A4   1040BDE8           POP      {R4,LR}
   \   000000A8   ........           B        AIC_EnableIT     ;; tailcall
   \                     ??PIO_InitializeInterrupts_2:
   \   000000AC   ........           DC32     InterruptHandler
    248          #endif
    249          
    250          #ifdef AT91C_ID_PIOC
    251              TRACE_DEBUG("PIO_Initialize: Configuring PIOC\n\r");
    252              AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOC;
    253              AT91C_BASE_PIOC->PIO_ISR;
    254              AT91C_BASE_PIOC->PIO_IDR = 0xFFFFFFFF;
    255              AIC_ConfigureIT(AT91C_ID_PIOC, priority, InterruptHandler);
    256              AIC_EnableIT(AT91C_ID_PIOC);
    257          #endif
    258          
    259          #ifdef AT91C_ID_PIOD
    260              TRACE_DEBUG("PIO_Initialize: Configuring PIOD\n\r");
    261              AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOD;
    262              AT91C_BASE_PIOC->PIO_ISR;
    263              AT91C_BASE_PIOC->PIO_IDR = 0xFFFFFFFF;
    264              AIC_ConfigureIT(AT91C_ID_PIOD, priority, InterruptHandler);
    265              AIC_EnableIT(AT91C_ID_PIOD);
    266          #endif
    267          
    268          #ifdef AT91C_ID_PIOE
    269              TRACE_DEBUG("PIO_Initialize: Configuring PIOE\n\r");
    270              AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOE;
    271              AT91C_BASE_PIOC->PIO_ISR;
    272              AT91C_BASE_PIOC->PIO_IDR = 0xFFFFFFFF;
    273              AIC_ConfigureIT(AT91C_ID_PIOE, priority, InterruptHandler);
    274              AIC_EnableIT(AT91C_ID_PIOE);
    275          #endif
    276          
    277          #if defined(AT91C_ID_PIOABCD)
    278              // Treat PIOABCD interrupts
    279              #if !defined(AT91C_ID_PIOA) \
    280               && !defined(AT91C_ID_PIOB) \
    281               && !defined(AT91C_ID_PIOC) \
    282               && !defined(AT91C_ID_PIOD)
    283          
    284                  TRACE_DEBUG("PIO_Initialize: Configuring PIOABCD\n\r");
    285                  AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOABCD;
    286                  AT91C_BASE_PIOA->PIO_ISR;

⌨️ 快捷键说明

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