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

📄 spi.lst

📁 IAR5.2下 AT91SAM9260 ARM 对 MCP2515 控制源化码
💻 LST
📖 第 1 页 / 共 3 页
字号:
    253          {
    254              //* If End of Receive Transfer interrupt occurred
    255              if (( status & AT91C_SPI_RXBUFF))
   \                     SPI0_Handler:
   \   00000000   400010E3           TST      R0,#0x40
   \   00000004   0A00000A           BEQ      ??SPI0_Handler_0
    256              {
    257                  //* Disable the Transmit Interrupt
    258                  AT91C_BASE_SPI0->SPI_IDR  = AT91C_SPI_RXBUFF;
   \   00000008   ........           LDR      R1,??DataTable2  ;; 0xfffc8018
   \   0000000C   4020A0E3           MOV      R2,#+64
   \   00000010   002081E5           STR      R2,[R1, #+0]
    259                  AT91C_BASE_SPI0->SPI_PTCR = AT91C_PDC_TXTDIS + AT91C_PDC_RXTDIS;
   \   00000014   34109FE5           LDR      R1,??SPI0_Handler_1  ;; 0xfffc8120
   \   00000018   0220A0E3           MOV      R2,#+2
   \   0000001C   802F82E3           ORR      R2,R2,#0x200
   \   00000020   002081E5           STR      R2,[R1, #+0]
    260                  r_flag = 0;
   \   00000024   28109FE5           LDR      R1,??SPI0_Handler_1+0x4  ;; r_flag
   \   00000028   0020A0E3           MOV      R2,#+0
   \   0000002C   0020C1E5           STRB     R2,[R1, #+0]
    261                  return;  
   \   00000030   050000EA           B        ??SPI0_Handler_2
    262              }          		
    263              AT91C_BASE_SPI0->SPI_PTCR = AT91C_PDC_TXTDIS + AT91C_PDC_RXTDIS;
   \                     ??SPI0_Handler_0:
   \   00000034   14109FE5           LDR      R1,??SPI0_Handler_1  ;; 0xfffc8120
   \   00000038   0220A0E3           MOV      R2,#+2
   \   0000003C   802F82E3           ORR      R2,R2,#0x200
   \   00000040   002081E5           STR      R2,[R1, #+0]
    264              AT91C_BASE_SPI0->SPI_IDR = status;
   \   00000044   ........           LDR      R1,??DataTable2  ;; 0xfffc8018
   \   00000048   000081E5           STR      R0,[R1, #+0]
    265          }
   \                     ??SPI0_Handler_2:
   \   0000004C   1EFF2FE1           BX       LR               ;; return
   \                     ??SPI0_Handler_1:
   \   00000050   2081FCFF           DC32     0xfffc8120
   \   00000054   ........           DC32     r_flag
    266          
    267          
    268          //*****************************************************************************
    269          //* 函数名称:AT91F_SPI_Handler
    270          //* 函数功能:SPI0 中断入口
    271          //* 入口参数:无
    272          //* 返回值 :无
    273          //*****************************************************************************

   \                                 In section .text, align 4, keep-with-next
    274          void AT91F_SPI0_Handler(void)
    275          {
   \                     AT91F_SPI0_Handler:
   \   00000000   10402DE9           PUSH     {R4,LR}
    276              unsigned int status = 0;
   \   00000004   0000A0E3           MOV      R0,#+0
   \   00000008   0040B0E1           MOVS     R4,R0
    277              
    278              AIC_DisableIT(AT91C_ID_SPI0);
   \   0000000C   0C00A0E3           MOV      R0,#+12
   \   00000010   ........           BL       AIC_DisableIT
    279              
    280              status = AT91C_BASE_SPI0->SPI_SR;
   \   00000014   24009FE5           LDR      R0,??AT91F_SPI0_Handler_0  ;; 0xfffc8010
   \   00000018   000090E5           LDR      R0,[R0, #+0]
   \   0000001C   0040B0E1           MOVS     R4,R0
    281              status &= AT91C_BASE_SPI0->SPI_IMR;
   \   00000020   1C009FE5           LDR      R0,??AT91F_SPI0_Handler_0+0x4  ;; 0xfffc801c
   \   00000024   000090E5           LDR      R0,[R0, #+0]
   \   00000028   044010E0           ANDS     R4,R0,R4
    282              
    283              SPI0_Handler(status);
   \   0000002C   0400B0E1           MOVS     R0,R4
   \   00000030   ........           BL       SPI0_Handler
    284              // 允许SPI0中断
    285              AIC_EnableIT(AT91C_ID_SPI0);
   \   00000034   0C00A0E3           MOV      R0,#+12
   \   00000038   ........           BL       AIC_EnableIT
    286          }
   \   0000003C   1080BDE8           POP      {R4,PC}          ;; return
   \                     ??AT91F_SPI0_Handler_0:
   \   00000040   1080FCFF           DC32     0xfffc8010
   \   00000044   1C80FCFF           DC32     0xfffc801c
    287          
    288          

   \                                 In section .text, align 4, keep-with-next
    289          void init_SPI0(void)
    290          {
   \                     init_SPI0:
   \   00000000   38402DE9           PUSH     {R3-R5,LR}
    291              long long int mod;
    292            
    293              //* Configure SPI in Master Mode with No CS selected !!!
    294              SPI_Configure(AT91C_BASE_SPI0, AT91C_ID_SPI0, AT91C_SPI_MSTR | AT91C_SPI_MODFDIS | AT91C_SPI_PCS);
   \   00000004   1120A0E3           MOV      R2,#+17
   \   00000008   F02A82E3           ORR      R2,R2,#0xF0000
   \   0000000C   0C10A0E3           MOV      R1,#+12
   \   00000010   7C009FE5           LDR      R0,??init_SPI0_0  ;; 0xfffc8000
   \   00000014   ........           BL       SPI_Configure
    295              
    296              //* Configure SPI CS0 for MCP2515 see the datasheet!
    297              mod = (AT91C_SPI_DLYBCT & 0x80) | (AT91C_SPI_DLYBS & 0x100000) | AT91C_SPI_NCPHA | (0x30 << 8);
   \   00000018   78009FE5           LDR      R0,??init_SPI0_0+0x4  ;; 0x103002
   \   0000001C   0010A0E3           MOV      R1,#+0
   \   00000020   0040A0E1           MOV      R4,R0
   \   00000024   0150A0E1           MOV      R5,R1
    298              SPI_CfgCs(AT91C_BASE_SPI0,0, mod);
   \   00000028   0420B0E1           MOVS     R2,R4
   \   0000002C   0010A0E3           MOV      R1,#+0
   \   00000030   5C009FE5           LDR      R0,??init_SPI0_0  ;; 0xfffc8000
   \   00000034   ........           BL       SPI_CfgCs
    299          
    300              //* 配制 PIO 为 SPI0 驱动
    301              PIO_CfgPeriph(AT91C_BASE_PIOA, 				// PIO controller base address
    302          		  ((unsigned int) AT91C_PA1_SPI0_MOSI)  |
    303          		  ((unsigned int) AT91C_PA3_SPI0_NPCS0) |
    304          		  ((unsigned int) AT91C_PA0_SPI0_MISO)  |
    305          		  ((unsigned int) AT91C_PA2_SPI0_SPCK), 	// Peripheral A
    306          	          0); 						// Peripheral B
   \   00000038   0020A0E3           MOV      R2,#+0
   \   0000003C   0F10A0E3           MOV      R1,#+15
   \   00000040   FF00E0E3           MVN      R0,#+255
   \   00000044   B00EC0E3           BIC      R0,R0,#0xB00
   \   00000048   ........           BL       PIO_CfgPeriph
    307              
    308              AT91F_PDC_Open(AT91C_BASE_PDC_SPI0);			// 打开 SPI0 PDC
   \   0000004C   48009FE5           LDR      R0,??init_SPI0_0+0x8  ;; 0xfffc8100
   \   00000050   ........           BL       AT91F_PDC_Open
    309              // 配制 SPI0 中断
    310              AIC_ConfigureIt(AT91C_BASE_AIC,
    311          		    AT91C_ID_SPI0,
    312          	            SPI0_INTERRUPT_LEVEL,
    313          	            AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL,
    314          		    AT91F_SPI0_Handler);
   \   00000054   44009FE5           LDR      R0,??init_SPI0_0+0xC  ;; AT91F_SPI0_Handler
   \   00000058   08002DE5           STR      R0,[SP, #-8]!
   \   0000005C   0030A0E3           MOV      R3,#+0
   \   00000060   0720A0E3           MOV      R2,#+7
   \   00000064   0C10A0E3           MOV      R1,#+12
   \   00000068   FF00E0E3           MVN      R0,#+255
   \   0000006C   F00EC0E3           BIC      R0,R0,#0xF00
   \   00000070   ........           BL       AIC_ConfigureIt
   \   00000074   08D08DE2           ADD      SP,SP,#+8        ;; stack cleaning
    315              
    316              SPI_Enable(AT91C_BASE_SPI0);			        // 使能 SPI0
   \   00000078   14009FE5           LDR      R0,??init_SPI0_0  ;; 0xfffc8000
   \   0000007C   ........           BL       SPI_Enable
    317              SPI_EnableIt(0x1<<6);		                        //允许接收缓冲区满中断---RXBUFF
   \   00000080   4000A0E3           MOV      R0,#+64
   \   00000084   ........           BL       SPI_EnableIt
    318              AIC_EnableIT(AT91C_ID_SPI0);			        // 使能 SPI0 中断
   \   00000088   0C00A0E3           MOV      R0,#+12
   \   0000008C   ........           BL       AIC_EnableIT
    319          }
   \   00000090   3180BDE8           POP      {R0,R4,R5,PC}    ;; return
   \                     ??init_SPI0_0:
   \   00000094   0080FCFF           DC32     0xfffc8000
   \   00000098   02301000           DC32     0x103002
   \   0000009C   0081FCFF           DC32     0xfffc8100
   \   000000A0   ........           DC32     AT91F_SPI0_Handler

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable2:
   \   00000000   1880FCFF           DC32     0xfffc8018

   \                                 In section .rodata, align 4
   \                     `?<Constant {14, 13, 176, 7}>`:
   \   00000000   0E0DB007           DC8 14, 13, 176, 7
    320          
    321          

   Maximum stack usage in bytes:

     Function           .cstack
     --------           -------
     AT91F_SPI0_Handler      0
     SPI0_Handler            0
     SPI_CfgCs               0
     SPI_CfgPCS              0
     SPI_Configure           0
     SPI_ConfigureNPCS       0
     SPI_Disable             0
     SPI_DisableIt           0
     SPI_Enable              0
     SPI_EnableIt            0
     SPI_IsFinished          0
     SPI_Read                0
     SPI_ReadBuffer          0
     SPI_Write               0
     SPI_WriteBuffer         0
     init_SPI0               8


   Section sizes:

     Function/Label               Bytes
     --------------               -----
     r_flag                          1
     SPI_Enable                     12
     SPI_Disable                    12
     SPI_Configure                  36
     SPI_CfgCs                      16
     SPI_ConfigureNPCS              16
     SPI_CfgPCS                     44
     SPI_EnableIt                   16
     SPI_DisableIt                  12
     SPI_Write                      80
     SPI_WriteBuffer                76
     SPI_IsFinished                 32
     SPI_Read                       28
     SPI_ReadBuffer                 76
     SPI0_Handler                   88
     AT91F_SPI0_Handler             72
     init_SPI0                     164
     ??DataTable2                    4
     ?<Constant {14, 13, 176, 7}>    4

 
   1 byte  in section .data
   4 bytes in section .rodata
 784 bytes in section .text
 
 784 bytes of CODE  memory
   4 bytes of CONST memory
   1 byte  of DATA  memory

Errors: none
Warnings: none

⌨️ 快捷键说明

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