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

📄 uart.lst

📁 本代码已经经过修改
💻 LST
📖 第 1 页 / 共 4 页
字号:

   \                                 In segment CODE, align 4, keep-with-next
     96          void UART_FifoConfig(UART_TypeDef *UARTx, FunctionalState NewState)
     97          {
     98            if (NewState==ENABLE) UARTx->CR|=0x0400; else UARTx->CR&=~0x0400;
   \                     UART_FifoConfig:
   \   00000000   0129               CMP         R1,#+0x1
   \   00000002   8189               LDRH        R1,[R0, #+0xC]
   \   00000004   03D1               BNE         ??UART_FifoConfig_0
   \   00000006   8022               MOV         R2,#+0x80
   \   00000008   D200               LSL         R2,R2,#+0x3        ;; #+0x400
   \   0000000A   0A43               ORR         R2,R1
   \   0000000C   01E0               B           ??UART_FifoConfig_1
   \                     ??UART_FifoConfig_0:
   \   0000000E   024A               LDR         R2,??UART_FifoConfig_2  ;; 0xfbff
   \   00000010   0A40               AND         R2,R1
   \                     ??UART_FifoConfig_1:
   \   00000012   8281               STRH        R2,[R0, #+0xC]
     99          }
   \   00000014   00B0               ADD         SP,#+0
   \   00000016   7047               BX          LR                 ;; return
   \                     ??UART_FifoConfig_2:
   \   00000018   FFFB0000           DC32        0xfbff
    100          
    101          /*******************************************************************************
    102          * Function Name  : UART_FifoReset
    103          * Description    : This function resets the Rx and the Tx FIFOs of the
    104          *                  selected UART.
    105          * Input 1        : UARTx (x can be 0,1, 2 or 3) the desired UART
    106          * Input 2        : UART_RxFIFO or UART_TxFIFO
    107          * Output         : None
    108          * Return         : None
    109          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    110          void UART_FifoReset(UART_TypeDef *UARTx, UARTFIFO_TypeDef FIFO)
    111          {
    112            if (FIFO==UART_RxFIFO) UARTx->RxRSTR=0xFFFF; else UARTx->TxRSTR=0xFFFF;
   \                     UART_FifoReset:
   \   00000000   ....               LDR         R2,??DataTable1    ;; 0xffff
   \   00000002   0029               CMP         R1,#+0
   \   00000004   01D1               BNE         ??UART_FifoReset_0
   \   00000006   8284               STRH        R2,[R0, #+0x24]
   \   00000008   00E0               B           ??UART_FifoReset_1
   \                     ??UART_FifoReset_0:
   \   0000000A   0284               STRH        R2,[R0, #+0x20]
    113          }
   \                     ??UART_FifoReset_1:
   \   0000000C   00B0               ADD         SP,#+0
   \   0000000E   7047               BX          LR                 ;; return
    114          
    115          /*******************************************************************************
    116          * Function Name  : UART_LoopBackConfig
    117          * Description    : This function enables or disables the loop back mode of
    118          *                  the selected UART.
    119          * Input 1        : UARTx (x can be 0,1, 2 or 3) the desired UART
    120          * Input 2        : ENABLE or DISABLE
    121          * Output         : None
    122          * Return         : None
    123          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    124          void UART_LoopBackConfig(UART_TypeDef *UARTx, FunctionalState NewState)
    125          {
    126            if (NewState==ENABLE) UARTx->CR|=0x0040; else UARTx->CR&=~0x0040;
   \                     UART_LoopBackConfig:
   \   00000000   0129               CMP         R1,#+0x1
   \   00000002   8189               LDRH        R1,[R0, #+0xC]
   \   00000004   02D1               BNE         ??UART_LoopBackConfig_0
   \   00000006   4022               MOV         R2,#+0x40
   \   00000008   0A43               ORR         R2,R1
   \   0000000A   01E0               B           ??UART_LoopBackConfig_1
   \                     ??UART_LoopBackConfig_0:
   \   0000000C   024A               LDR         R2,??UART_LoopBackConfig_2  ;; 0xffbf
   \   0000000E   0A40               AND         R2,R1
   \                     ??UART_LoopBackConfig_1:
   \   00000010   8281               STRH        R2,[R0, #+0xC]
    127          }
   \   00000012   00B0               ADD         SP,#+0
   \   00000014   7047               BX          LR                 ;; return
   \   00000016   C046               NOP         
   \                     ??UART_LoopBackConfig_2:
   \   00000018   BFFF0000           DC32        0xffbf
    128          
    129          /*******************************************************************************
    130          * Function Name  : UART_RxConfig
    131          * Description    : This function enables or disables the UART data reception.
    132          * Input 1        : UARTx (x can be 0,1, 2 or 3) the desired UART
    133          * Input 2        : ENABLE or DISABLE
    134          * Output         : None
    135          * Return         : None
    136          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    137          void UART_RxConfig(UART_TypeDef *UARTx, FunctionalState NewState)
    138          {
    139            if (NewState==ENABLE) UARTx->CR|=0x0100; else UARTx->CR&=~0x0100;
   \                     UART_RxConfig:
   \   00000000   0129               CMP         R1,#+0x1
   \   00000002   8189               LDRH        R1,[R0, #+0xC]
   \   00000004   03D1               BNE         ??UART_RxConfig_0
   \   00000006   8022               MOV         R2,#+0x80
   \   00000008   5200               LSL         R2,R2,#+0x1        ;; #+0x100
   \   0000000A   0A43               ORR         R2,R1
   \   0000000C   01E0               B           ??UART_RxConfig_1
   \                     ??UART_RxConfig_0:
   \   0000000E   024A               LDR         R2,??UART_RxConfig_2  ;; 0xfeff
   \   00000010   0A40               AND         R2,R1
   \                     ??UART_RxConfig_1:
   \   00000012   8281               STRH        R2,[R0, #+0xC]
    140          }
   \   00000014   00B0               ADD         SP,#+0
   \   00000016   7047               BX          LR                 ;; return
   \                     ??UART_RxConfig_2:
   \   00000018   FFFE0000           DC32        0xfeff
    141          
    142          /*******************************************************************************
    143          * Function Name  : UART_OnOffConfig
    144          * Description    : This function sets On/Off the selected UART.
    145          * Input 1        : UARTx (x can be 0,1, 2 or 3) the desired UART
    146          * Input 2        : ENABLE or DISABLE
    147          * Output         : None
    148          * Return         : None
    149          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    150          void UART_OnOffConfig(UART_TypeDef *UARTx, FunctionalState NewState)
    151          {
    152            if (NewState==ENABLE) UARTx->CR|=0x0080; else UARTx->CR&=~0x0080;
   \                     UART_OnOffConfig:
   \   00000000   0129               CMP         R1,#+0x1
   \   00000002   8189               LDRH        R1,[R0, #+0xC]
   \   00000004   02D1               BNE         ??UART_OnOffConfig_0
   \   00000006   8022               MOV         R2,#+0x80
   \   00000008   0A43               ORR         R2,R1
   \   0000000A   01E0               B           ??UART_OnOffConfig_1
   \                     ??UART_OnOffConfig_0:
   \   0000000C   024A               LDR         R2,??UART_OnOffConfig_2  ;; 0xff7f
   \   0000000E   0A40               AND         R2,R1
   \                     ??UART_OnOffConfig_1:
   \   00000010   8281               STRH        R2,[R0, #+0xC]
    153          }
   \   00000012   00B0               ADD         SP,#+0
   \   00000014   7047               BX          LR                 ;; return
   \   00000016   C046               NOP         
   \                     ??UART_OnOffConfig_2:
   \   00000018   7FFF0000           DC32        0xff7f
    154          
    155          /*******************************************************************************
    156          * Function Name  : UART_ByteSend
    157          * Description    : This function sends a data byte to the selected UART.
    158          * Input 1        : UARTx (x can be 0,1, 2 or 3) the desired UART
    159          * Input 2        : A pointer to the data byte to send
    160          * Output         : None
    161          * Return         : None
    162          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    163          void UART_ByteSend(UART_TypeDef *UARTx, u8 *Data)
    164          {
    165            if (UARTx->CR & (0x0001<<UART_FIFOEnableBit))// if FIFO ENABLED
   \                     UART_ByteSend:
   \   00000000   8289               LDRH        R2,[R0, #+0xC]
   \   00000002   5205               LSL         R2,R2,#+0x15
   \   00000004   03D5               BPL         ??UART_ByteSend_0
    166              while((UARTx->SR & UART_TxFull)); // while the UART_TxFIFO contain 16 characters.
   \                     ??UART_ByteSend_1:
   \   00000006   828A               LDRH        R2,[R0, #+0x14]
   \   00000008   9205               LSL         R2,R2,#+0x16
   \   0000000A   FCD4               BMI         ??UART_ByteSend_1
   \   0000000C   02E0               B           ??UART_ByteSend_2
    167            else                  // if FIFO DISABLED
    168              while (!(UARTx->SR & UART_TxEmpty)); // while the transmit shift register not empty
   \                     ??UART_ByteSend_0:
   \   0000000E   828A               LDRH        R2,[R0, #+0x14]
   \   00000010   9207               LSL         R2,R2,#+0x1E
   \   00000012   FCD5               BPL         ??UART_ByteSend_0
    169            UARTx->TxBUFR = *Data;
   \                     ??UART_ByteSend_2:
   \   00000014   0978               LDRB        R1,[R1, #+0]
   \   00000016   8180               STRH        R1,[R0, #+0x4]
    170          }
   \   00000018   00B0               ADD         SP,#+0
   \   0000001A   7047               BX          LR                 ;; return
    171          
    172          /*******************************************************************************
    173          * Function Name  : UART_9BitByteSend
    174          * Description    : This function sends a 9 bits data byte to the selected UART.
    175          * Input 1        : UARTx (x can be 0,1, 2 or 3) the desired UART
    176          * Input 2        : A pointer to the data to send
    177          * Output         : None
    178          * Return         : None
    179          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    180          void UART_9BitByteSend(UART_TypeDef *UARTx, u16 *Data)
    181          {
    182            if(UARTx->CR & (0x0001<<UART_FIFOEnableBit))// if FIFO ENABLED
   \                     UART_9BitByteSend:
   \   00000000   8289               LDRH        R2,[R0, #+0xC]
   \   00000002   5205               LSL         R2,R2,#+0x15
   \   00000004   03D5               BPL         ??UART_9BitByteSend_0
    183              while((UARTx->SR & UART_TxFull)); // while the UART_TxFIFO contain 16 characters.
   \                     ??UART_9BitByteSend_1:
   \   00000006   828A               LDRH        R2,[R0, #+0x14]
   \   00000008   9205               LSL         R2,R2,#+0x16
   \   0000000A   FCD4               BMI         ??UART_9BitByteSend_1
   \   0000000C   02E0               B           ??UART_9BitByteSend_2
    184            else                  // if FIFO DISABLED
    185              while (!(UARTx->SR & UART_TxEmpty)); // while the transmit shift register not empty
   \                     ??UART_9BitByteSend_0:

⌨️ 快捷键说明

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