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

📄 cstartup_sam7.lst

📁 本程序为完成各种中断的演示
💻 LST
📖 第 1 页 / 共 2 页
字号:
   \   0000001C   194A               LDR         R2,??AT91F_LowLevelInit_0+0x10  ;; 0x10483f0e
   \   0000001E   0A60               STR         R2,[R1, #+0]
     59              // Wait for PLL stabilization
     60              while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_LOCK) );
   \                     ??AT91F_LowLevelInit_2:
   \   00000020   0168               LDR         R1,[R0, #+0]
   \   00000022   4907               LSL         R1,R1,#+0x1D
   \   00000024   FCD5               BPL         ??AT91F_LowLevelInit_2
     61              // Wait until the master clock is established for the case we already turn on the PLL
     62              while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY) );
   \                     ??AT91F_LowLevelInit_3:
   \   00000026   0821               MOV         R1,#+0x8
   \   00000028   0268               LDR         R2,[R0, #+0]
   \   0000002A   0A42               TST         R2,R1
   \   0000002C   FBD0               BEQ         ??AT91F_LowLevelInit_3
     63          
     64              /////////////////////////////////////////////////////////////////////////////////////////////////////
     65              // Init PMC Step 3.
     66              // Selection of Master Clock MCK (equal to Processor Clock PCK) equal to PLL/2 = 48MHz
     67              // The PMC_MCKR register must not be programmed in a single write operation (see. Product Errata Sheet)
     68              /////////////////////////////////////////////////////////////////////////////////////////////////////
     69              AT91C_BASE_PMC->PMC_MCKR = AT91C_PMC_PRES_CLK_2;
   \   0000002E   164A               LDR         R2,??AT91F_LowLevelInit_0+0x14  ;; 0xfffffc30
   \   00000030   0423               MOV         R3,#+0x4
   \   00000032   1360               STR         R3,[R2, #+0]
     70              // Wait until the master clock is established
     71              while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY) );
   \                     ??AT91F_LowLevelInit_4:
   \   00000034   0368               LDR         R3,[R0, #+0]
   \   00000036   0B42               TST         R3,R1
   \   00000038   FCD0               BEQ         ??AT91F_LowLevelInit_4
     72          
     73              AT91C_BASE_PMC->PMC_MCKR |= AT91C_PMC_CSS_PLL_CLK;
   \   0000003A   1368               LDR         R3,[R2, #+0]
   \   0000003C   0324               MOV         R4,#+0x3
   \   0000003E   1C43               ORR         R4,R3
   \   00000040   1460               STR         R4,[R2, #+0]
     74              // Wait until the master clock is established
     75              while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY) );
   \                     ??AT91F_LowLevelInit_5:
   \   00000042   0268               LDR         R2,[R0, #+0]
   \   00000044   0A42               TST         R2,R1
   \   00000046   FCD0               BEQ         ??AT91F_LowLevelInit_5
     76          
     77              /////////////////////////////////////////////////////////////////////////////////////////////////////
     78              //  Disable Watchdog (write once register)
     79              /////////////////////////////////////////////////////////////////////////////////////////////////////
     80              AT91C_BASE_WDTC->WDTC_WDMR = AT91C_WDTC_WDDIS;
   \   00000048   1048               LDR         R0,??AT91F_LowLevelInit_0+0x18  ;; 0xfffffd44
   \   0000004A   0903               LSL         R1,R1,#+0xC
   \   0000004C   0160               STR         R1,[R0, #+0]
     81          
     82              ////////////////////////////////////////////////////////////////////////////////////////////////////
     83              //  Init AIC: assign corresponding handler for each interrupt source
     84              /////////////////////////////////////////////////////////////////////////////////////////////////////
     85              AT91C_BASE_AIC->AIC_SVR[0] = (int) AT91F_Default_FIQ_handler ;
   \   0000004E   1048               LDR         R0,??AT91F_LowLevelInit_0+0x1C  ;; 0xfffff080
   \   00000050   1049               LDR         R1,??AT91F_LowLevelInit_0+0x20  ;; AT91F_Default_FIQ_handler
   \   00000052   0160               STR         R1,[R0, #+0]
     86              for (i = 1; i < 31; i++) {
   \   00000054   0120               MOV         R0,#+0x1
   \   00000056   0E4A               LDR         R2,??AT91F_LowLevelInit_0+0x1C  ;; 0xfffff080
   \   00000058   0F4B               LDR         R3,??AT91F_LowLevelInit_0+0x24  ;; AT91F_Default_IRQ_handler
     87                  AT91C_BASE_AIC->AIC_SVR[i] = (int) AT91F_Default_IRQ_handler ;
   \                     ??AT91F_LowLevelInit_6:
   \   0000005A   8100               LSL         R1,R0,#+0x2
   \   0000005C   5350               STR         R3,[R2, R1]
     88              }
   \   0000005E   401C               ADD         R0,R0,#+0x1
   \   00000060   0106               LSL         R1,R0,#+0x18
   \   00000062   090E               LSR         R1,R1,#+0x18
   \   00000064   1F29               CMP         R1,#+0x1F
   \   00000066   F8D3               BCC         ??AT91F_LowLevelInit_6
     89              AT91C_BASE_AIC->AIC_SPU = (unsigned int) AT91F_Spurious_handler;
   \   00000068   0C48               LDR         R0,??AT91F_LowLevelInit_0+0x28  ;; 0xfffff134
   \   0000006A   0D49               LDR         R1,??AT91F_LowLevelInit_0+0x2C  ;; AT91F_Spurious_handler
   \   0000006C   0160               STR         R1,[R0, #+0]
     90          }
   \   0000006E   10BC               POP         {R4}
   \   00000070   01BC               POP         {R0}
   \   00000072   0047               BX          R0                 ;; return
   \                     ??AT91F_LowLevelInit_0:
   \   00000074   20FCFFFF           DC32        0xfffffc20
   \   00000078   01400000           DC32        0x4001
   \   0000007C   68FCFFFF           DC32        0xfffffc68
   \   00000080   2CFCFFFF           DC32        0xfffffc2c
   \   00000084   0E3F4810           DC32        0x10483f0e
   \   00000088   30FCFFFF           DC32        0xfffffc30
   \   0000008C   44FDFFFF           DC32        0xfffffd44
   \   00000090   80F0FFFF           DC32        0xfffff080
   \   00000094   ........           DC32        AT91F_Default_FIQ_handler
   \   00000098   ........           DC32        AT91F_Default_IRQ_handler
   \   0000009C   34F1FFFF           DC32        0xfffff134
   \   000000A0   ........           DC32        AT91F_Spurious_handler

   Maximum stack usage in bytes:

     Function           CSTACK
     --------           ------
     AT91F_LowLevelInit     8


   Segment part sizes:

     Function/Label     Bytes
     --------------     -----
     AT91F_LowLevelInit  164
      Others               8

 
 172 bytes in segment CODE
 
 164 bytes of CODE memory (+ 8 bytes shared)

Errors: none
Warnings: none

⌨️ 快捷键说明

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