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

📄 pdc.lst

📁 IAR5.2下 AT91SAM9260 ARM 对 MCP2515 控制源化码
💻 LST
📖 第 1 页 / 共 2 页
字号:
   \                                 In section .text, align 4, keep-with-next
    140          void AT91F_PDC_Open (AT91PS_PDC pPDC)       		// \arg pointer to a PDC controller
    141          {
   \                     AT91F_PDC_Open:
   \   00000000   10402DE9           PUSH     {R4,LR}
   \   00000004   0040B0E1           MOVS     R4,R0
    142              //* Disable the RX and TX PDC transfer requests
    143          	AT91F_PDC_DisableRx(pPDC);
   \   00000008   0400B0E1           MOVS     R0,R4
   \   0000000C   ........           BL       AT91F_PDC_DisableRx
    144          	AT91F_PDC_DisableTx(pPDC);
   \   00000010   0400B0E1           MOVS     R0,R4
   \   00000014   ........           BL       AT91F_PDC_DisableTx
    145          
    146          	//* Reset all Counter register Next buffer first
    147          	AT91F_PDC_SetNextTx(pPDC, (char *) 0, 0);
   \   00000018   0020A0E3           MOV      R2,#+0
   \   0000001C   0010A0E3           MOV      R1,#+0
   \   00000020   0400B0E1           MOVS     R0,R4
   \   00000024   ........           BL       AT91F_PDC_SetNextTx
    148          	AT91F_PDC_SetNextRx(pPDC, (char *) 0, 0);
   \   00000028   0020A0E3           MOV      R2,#+0
   \   0000002C   0010A0E3           MOV      R1,#+0
   \   00000030   0400B0E1           MOVS     R0,R4
   \   00000034   ........           BL       AT91F_PDC_SetNextRx
    149          	AT91F_PDC_SetTx(pPDC, (char *) 0, 0);
   \   00000038   0020A0E3           MOV      R2,#+0
   \   0000003C   0010A0E3           MOV      R1,#+0
   \   00000040   0400B0E1           MOVS     R0,R4
   \   00000044   ........           BL       AT91F_PDC_SetTx
    150          	AT91F_PDC_SetRx(pPDC, (char *) 0, 0);
   \   00000048   0020A0E3           MOV      R2,#+0
   \   0000004C   0010A0E3           MOV      R1,#+0
   \   00000050   0400B0E1           MOVS     R0,R4
   \   00000054   ........           BL       AT91F_PDC_SetRx
    151          
    152              //* Enable the RX and TX PDC transfer requests
    153          	AT91F_PDC_EnableRx(pPDC);
   \   00000058   0400B0E1           MOVS     R0,R4
   \   0000005C   ........           BL       AT91F_PDC_EnableRx
    154          	AT91F_PDC_EnableTx(pPDC);
   \   00000060   0400B0E1           MOVS     R0,R4
   \   00000064   ........           BL       AT91F_PDC_EnableTx
    155          }
   \   00000068   1080BDE8           POP      {R4,PC}          ;; return
    156          
    157          //*----------------------------------------------------------------------------
    158          //* \fn    AT91F_PDC_Close
    159          //* \brief Close PDC: disable TX and RX reset transfer descriptors
    160          //*----------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    161          void AT91F_PDC_Close (AT91PS_PDC pPDC)       // \arg pointer to a PDC controller
    162          {
   \                     AT91F_PDC_Close:
   \   00000000   10402DE9           PUSH     {R4,LR}
   \   00000004   0040B0E1           MOVS     R4,R0
    163              //* Disable the RX and TX PDC transfer requests
    164          	AT91F_PDC_DisableRx(pPDC);
   \   00000008   0400B0E1           MOVS     R0,R4
   \   0000000C   ........           BL       AT91F_PDC_DisableRx
    165          	AT91F_PDC_DisableTx(pPDC);
   \   00000010   0400B0E1           MOVS     R0,R4
   \   00000014   ........           BL       AT91F_PDC_DisableTx
    166          
    167          	//* Reset all Counter register Next buffer first
    168          	AT91F_PDC_SetNextTx(pPDC, (char *) 0, 0);
   \   00000018   0020A0E3           MOV      R2,#+0
   \   0000001C   0010A0E3           MOV      R1,#+0
   \   00000020   0400B0E1           MOVS     R0,R4
   \   00000024   ........           BL       AT91F_PDC_SetNextTx
    169          	AT91F_PDC_SetNextRx(pPDC, (char *) 0, 0);
   \   00000028   0020A0E3           MOV      R2,#+0
   \   0000002C   0010A0E3           MOV      R1,#+0
   \   00000030   0400B0E1           MOVS     R0,R4
   \   00000034   ........           BL       AT91F_PDC_SetNextRx
    170          	AT91F_PDC_SetTx(pPDC, (char *) 0, 0);
   \   00000038   0020A0E3           MOV      R2,#+0
   \   0000003C   0010A0E3           MOV      R1,#+0
   \   00000040   0400B0E1           MOVS     R0,R4
   \   00000044   ........           BL       AT91F_PDC_SetTx
    171          	AT91F_PDC_SetRx(pPDC, (char *) 0, 0);
   \   00000048   0020A0E3           MOV      R2,#+0
   \   0000004C   0010A0E3           MOV      R1,#+0
   \   00000050   0400B0E1           MOVS     R0,R4
   \   00000054   ........           BL       AT91F_PDC_SetRx
    172          
    173          }
   \   00000058   1080BDE8           POP      {R4,PC}          ;; return
    174          
    175          //*----------------------------------------------------------------------------
    176          //* \fn    AT91F_PDC_SendFrame
    177          //* \brief Close PDC: disable TX and RX reset transfer descriptors
    178          //*----------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    179          unsigned int AT91F_PDC_SendFrame(
    180          	AT91PS_PDC pPDC,
    181          	char *pBuffer,
    182          	unsigned int szBuffer,
    183          	char *pNextBuffer,
    184          	unsigned int szNextBuffer )
    185          {
   \                     AT91F_PDC_SendFrame:
   \   00000000   F0412DE9           PUSH     {R4-R8,LR}
   \   00000004   0050B0E1           MOVS     R5,R0
   \   00000008   0160B0E1           MOVS     R6,R1
   \   0000000C   0270B0E1           MOVS     R7,R2
   \   00000010   0340B0E1           MOVS     R4,R3
   \   00000014   18809DE5           LDR      R8,[SP, #+24]
    186          	if (AT91F_PDC_IsTxEmpty(pPDC)) 
   \   00000018   0500B0E1           MOVS     R0,R5
   \   0000001C   ........           BL       AT91F_PDC_IsTxEmpty
   \   00000020   000050E3           CMP      R0,#+0
   \   00000024   0900000A           BEQ      ??AT91F_PDC_SendFrame_0
    187          	{
    188          		//* Buffer and next buffer can be initialized
    189          		AT91F_PDC_SetTx(pPDC, pBuffer, szBuffer);
   \   00000028   0720B0E1           MOVS     R2,R7
   \   0000002C   0610B0E1           MOVS     R1,R6
   \   00000030   0500B0E1           MOVS     R0,R5
   \   00000034   ........           BL       AT91F_PDC_SetTx
    190          		AT91F_PDC_SetNextTx(pPDC, pNextBuffer, szNextBuffer);
   \   00000038   0820B0E1           MOVS     R2,R8
   \   0000003C   0410B0E1           MOVS     R1,R4
   \   00000040   0500B0E1           MOVS     R0,R5
   \   00000044   ........           BL       AT91F_PDC_SetNextTx
    191          		return 2;
   \   00000048   0200A0E3           MOV      R0,#+2
   \   0000004C   0A0000EA           B        ??AT91F_PDC_SendFrame_1
    192          	}
    193          	else if (AT91F_PDC_IsNextTxEmpty(pPDC)) 
   \                     ??AT91F_PDC_SendFrame_0:
   \   00000050   0500B0E1           MOVS     R0,R5
   \   00000054   ........           BL       AT91F_PDC_IsNextTxEmpty
   \   00000058   000050E3           CMP      R0,#+0
   \   0000005C   0500000A           BEQ      ??AT91F_PDC_SendFrame_2
    194          	{
    195          		//* Only one buffer can be initialized
    196          		AT91F_PDC_SetNextTx(pPDC, pBuffer, szBuffer);
   \   00000060   0720B0E1           MOVS     R2,R7
   \   00000064   0610B0E1           MOVS     R1,R6
   \   00000068   0500B0E1           MOVS     R0,R5
   \   0000006C   ........           BL       AT91F_PDC_SetNextTx
    197          		return 1;
   \   00000070   0100A0E3           MOV      R0,#+1
   \   00000074   000000EA           B        ??AT91F_PDC_SendFrame_1
    198          	}
    199          	else 
    200          	{
    201          		//* All buffer are in use...
    202          		return 0;
   \                     ??AT91F_PDC_SendFrame_2:
   \   00000078   0000A0E3           MOV      R0,#+0
   \                     ??AT91F_PDC_SendFrame_1:
   \   0000007C   F081BDE8           POP      {R4-R8,PC}       ;; return
    203          	}
    204          }
    205          
    206          //*----------------------------------------------------------------------------
    207          //* \fn    AT91F_PDC_ReceiveFrame
    208          //* \brief Close PDC: disable TX and RX reset transfer descriptors
    209          //*----------------------------------------------------------------------------

   \                                 In section .text, align 4, keep-with-next
    210          unsigned int AT91F_PDC_ReceiveFrame (
    211          	AT91PS_PDC pPDC,
    212          	char *pBuffer,
    213          	unsigned int szBuffer,
    214          	char *pNextBuffer,
    215          	unsigned int szNextBuffer )
    216          {
   \                     AT91F_PDC_ReceiveFrame:
   \   00000000   F0412DE9           PUSH     {R4-R8,LR}
   \   00000004   0050B0E1           MOVS     R5,R0
   \   00000008   0160B0E1           MOVS     R6,R1
   \   0000000C   0270B0E1           MOVS     R7,R2
   \   00000010   0340B0E1           MOVS     R4,R3
   \   00000014   18809DE5           LDR      R8,[SP, #+24]
    217          	if (AT91F_PDC_IsRxEmpty(pPDC)) {
   \   00000018   0500B0E1           MOVS     R0,R5
   \   0000001C   ........           BL       AT91F_PDC_IsRxEmpty
   \   00000020   000050E3           CMP      R0,#+0
   \   00000024   0900000A           BEQ      ??AT91F_PDC_ReceiveFrame_0
    218          		//* Buffer and next buffer can be initialized
    219          		AT91F_PDC_SetRx(pPDC, pBuffer, szBuffer);
   \   00000028   0720B0E1           MOVS     R2,R7
   \   0000002C   0610B0E1           MOVS     R1,R6
   \   00000030   0500B0E1           MOVS     R0,R5
   \   00000034   ........           BL       AT91F_PDC_SetRx
    220          		AT91F_PDC_SetNextRx(pPDC, pNextBuffer, szNextBuffer);
   \   00000038   0820B0E1           MOVS     R2,R8
   \   0000003C   0410B0E1           MOVS     R1,R4
   \   00000040   0500B0E1           MOVS     R0,R5
   \   00000044   ........           BL       AT91F_PDC_SetNextRx
    221          		return 2;
   \   00000048   0200A0E3           MOV      R0,#+2
   \   0000004C   0A0000EA           B        ??AT91F_PDC_ReceiveFrame_1
    222          	}
    223          	else if (AT91F_PDC_IsNextRxEmpty(pPDC)) {
   \                     ??AT91F_PDC_ReceiveFrame_0:
   \   00000050   0500B0E1           MOVS     R0,R5
   \   00000054   ........           BL       AT91F_PDC_IsNextRxEmpty
   \   00000058   000050E3           CMP      R0,#+0
   \   0000005C   0500000A           BEQ      ??AT91F_PDC_ReceiveFrame_2
    224          		//* Only one buffer can be initialized
    225          		AT91F_PDC_SetNextRx(pPDC, pBuffer, szBuffer);
   \   00000060   0720B0E1           MOVS     R2,R7
   \   00000064   0610B0E1           MOVS     R1,R6
   \   00000068   0500B0E1           MOVS     R0,R5
   \   0000006C   ........           BL       AT91F_PDC_SetNextRx
    226          		return 1;
   \   00000070   0100A0E3           MOV      R0,#+1
   \   00000074   000000EA           B        ??AT91F_PDC_ReceiveFrame_1
    227          	}
    228          	else 
    229                  {
    230          		//* All buffer are in use...
    231          		return 0;
   \                     ??AT91F_PDC_ReceiveFrame_2:
   \   00000078   0000A0E3           MOV      R0,#+0
   \                     ??AT91F_PDC_ReceiveFrame_1:
   \   0000007C   F081BDE8           POP      {R4-R8,PC}       ;; return
    232          	}
    233          }

   Maximum stack usage in bytes:

     Function                .cstack
     --------                -------
     AT91F_PDC_Close              0
     AT91F_PDC_DisableRx          0
     AT91F_PDC_DisableTx          0
     AT91F_PDC_EnableRx           0
     AT91F_PDC_EnableTx           0
     AT91F_PDC_IsNextRxEmpty      0
     AT91F_PDC_IsNextTxEmpty      0
     AT91F_PDC_IsRxEmpty          0
     AT91F_PDC_IsTxEmpty          0
     AT91F_PDC_Open               0
     AT91F_PDC_ReceiveFrame       0
     AT91F_PDC_SendFrame          0
     AT91F_PDC_SetNextRx          0
     AT91F_PDC_SetNextTx          0
     AT91F_PDC_SetRx              0
     AT91F_PDC_SetTx              0


   Section sizes:

     Function/Label          Bytes
     --------------          -----
     AT91F_PDC_SetNextRx       12
     AT91F_PDC_SetNextTx       12
     AT91F_PDC_SetRx           12
     AT91F_PDC_SetTx           12
     AT91F_PDC_EnableTx        12
     AT91F_PDC_EnableRx        12
     AT91F_PDC_DisableTx       12
     AT91F_PDC_DisableRx       12
     AT91F_PDC_IsTxEmpty       32
     AT91F_PDC_IsNextTxEmpty   32
     AT91F_PDC_IsRxEmpty       32
     AT91F_PDC_IsNextRxEmpty   32
     AT91F_PDC_Open           108
     AT91F_PDC_Close           92
     AT91F_PDC_SendFrame      128
     AT91F_PDC_ReceiveFrame   128

 
 680 bytes in section .text
 
 680 bytes of CODE memory

Errors: none
Warnings: none

⌨️ 快捷键说明

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