; generated by ARM C/C++ Compiler, 4.1 [Build 894]
; commandline ArmCC [--list --split_sections --debug -c --asm --interleave -o.\obj\uart.o --asm_dir=.\lst\ --list_dir=.\lst\ --depend=.\obj\uart.d --cpu=Cortex-M0 --apcs=interwork -I..\..\..\..\Library\Device\Nuvoton\Nano1X2Series\Include -I..\..\..\..\Library\StdDriver\inc -I..\..\..\..\Library\CMSIS\Include -IC:\Keil\ARM\RV31\Inc -IC:\Keil\ARM\CMSIS\Include -D__MICROLIB --omf_browse=.\obj\uart.crf ..\..\..\..\Library\StdDriver\src\uart.c]
                          THUMB

                          AREA ||i.UART_ClearIntFlag||, CODE, READONLY, ALIGN=1

                  UART_ClearIntFlag PROC
;;;39      */
;;;40     void UART_ClearIntFlag(UART_T* uart , uint32_t u32InterruptFlag)
000000  074a              LSLS     r2,r1,#29
;;;41     {
;;;42     
;;;43         if(u32InterruptFlag & UART_ISR_RLS_IS_Msk) { /* clear Receive Line Status Interrupt */
000002  d503              BPL      |L1.12|
;;;44             uart->FSR = UART_FSR_BI_F_Msk | UART_FSR_FE_F_Msk | UART_FSR_FE_F_Msk;
000004  2260              MOVS     r2,#0x60
000006  6182              STR      r2,[r0,#0x18]
;;;45             uart->TRSR = UART_TRSR_RS485_ADDET_F_Msk;
000008  2201              MOVS     r2,#1
00000a  6142              STR      r2,[r0,#0x14]
                  |L1.12|
;;;46         }
;;;47     
;;;48         if(u32InterruptFlag & UART_ISR_MODEM_IS_Msk)  /* clear Modem Interrupt */
00000c  070a              LSLS     r2,r1,#28
00000e  d504              BPL      |L1.26|
;;;49             uart->MCSR |= UART_MCSR_DCT_F_Msk;
000010  69c2              LDR      r2,[r0,#0x1c]
000012  2301              MOVS     r3,#1
000014  049b              LSLS     r3,r3,#18
000016  431a              ORRS     r2,r2,r3
000018  61c2              STR      r2,[r0,#0x1c]
                  |L1.26|
;;;50     
;;;51         if(u32InterruptFlag & UART_ISR_BUF_ERR_IS_Msk) { /* clear Buffer Error Interrupt */
00001a  068a              LSLS     r2,r1,#26
00001c  d502              BPL      |L1.36|
;;;52             uart->FSR = UART_FSR_RX_OVER_F_Msk | UART_FSR_TX_OVER_F_Msk;
00001e  22ff              MOVS     r2,#0xff
000020  3202              ADDS     r2,#2
000022  6182              STR      r2,[r0,#0x18]
                  |L1.36|
;;;53         }
;;;54     
;;;55         if(u32InterruptFlag & UART_ISR_WAKE_IS_Msk) { /* clear wake up Interrupt */
000024  064a              LSLS     r2,r1,#25
000026  d501              BPL      |L1.44|
;;;56             uart->ISR = UART_ISR_WAKE_IS_Msk;
000028  2240              MOVS     r2,#0x40
00002a  6102              STR      r2,[r0,#0x10]
                  |L1.44|
;;;57         }
;;;58     
;;;59         if(u32InterruptFlag & UART_ISR_ABAUD_IS_Msk) { /* clear auto-baud rate Interrupt */
00002c  060a              LSLS     r2,r1,#24
00002e  d501              BPL      |L1.52|
;;;60             uart->TRSR = UART_TRSR_ABAUD_TOUT_F_Msk | UART_TRSR_ABAUD_F_Msk;
000030  2206              MOVS     r2,#6
000032  6142              STR      r2,[r0,#0x14]
                  |L1.52|
;;;61         }
;;;62     
;;;63         if(u32InterruptFlag & UART_ISR_LIN_IS_Msk) { /* clear LIN break Interrupt */
000034  05c9              LSLS     r1,r1,#23
000036  d501              BPL      |L1.60|
;;;64             uart->TRSR = UART_TRSR_LIN_TX_F_Msk | UART_TRSR_LIN_RX_F_Msk | UART_TRSR_BIT_ERR_F_Msk;
000038  2138              MOVS     r1,#0x38
00003a  6141              STR      r1,[r0,#0x14]
                  |L1.60|
;;;65         }
;;;66     
;;;67     }
00003c  4770              BX       lr
;;;68     
                          ENDP


                          AREA ||i.UART_Close||, CODE, READONLY, ALIGN=1

                  UART_Close PROC
;;;76      */
;;;77     void UART_Close(UART_T* uart)
000000  2100              MOVS     r1,#0
;;;78     {
;;;79         uart->IER = 0;
000002  60c1              STR      r1,[r0,#0xc]
;;;80     }
000004  4770              BX       lr
;;;81     
                          ENDP


                          AREA ||i.UART_DisableFlowCtrl||, CODE, READONLY, ALIGN=1

                  UART_DisableFlowCtrl PROC
;;;89      */
;;;90     void UART_DisableFlowCtrl(UART_T* uart)
000000  6841              LDR      r1,[r0,#4]
;;;91     {
;;;92         uart->CTL &= ~(UART_CTL_AUTO_RTS_EN_Msk | UART_CTL_AUTO_CTS_EN_Msk);
000002  2230              MOVS     r2,#0x30
000004  4391              BICS     r1,r1,r2
000006  6041              STR      r1,[r0,#4]
;;;93     }
000008  4770              BX       lr
;;;94     
                          ENDP


                          AREA ||i.UART_DisableInt||, CODE, READONLY, ALIGN=1

                  UART_DisableInt PROC
;;;112     */
;;;113    void UART_DisableInt(UART_T*  uart, uint32_t u32InterruptFlag )
000000  68c2              LDR      r2,[r0,#0xc]
;;;114    {
;;;115        uart->IER &= ~ u32InterruptFlag;
000002  438a              BICS     r2,r2,r1
000004  60c2              STR      r2,[r0,#0xc]
;;;116    }
000006  4770              BX       lr
;;;117    
                          ENDP


                          AREA ||i.UART_EnableFlowCtrl||, CODE, READONLY, ALIGN=2

                  UART_EnableFlowCtrl PROC
;;;126     */
;;;127    void UART_EnableFlowCtrl(UART_T* uart )
000000  69c1              LDR      r1,[r0,#0x1c]
;;;128    {
;;;129        uart->MCSR |= UART_MCSR_LEV_RTS_Msk | UART_MCSR_LEV_CTS_Msk;
000002  4a04              LDR      r2,|L5.20|
000004  4311              ORRS     r1,r1,r2
000006  61c1              STR      r1,[r0,#0x1c]
;;;130        uart->CTL |= UART_CTL_AUTO_RTS_EN_Msk | UART_CTL_AUTO_CTS_EN_Msk;
000008  6841              LDR      r1,[r0,#4]
00000a  2230              MOVS     r2,#0x30
00000c  4311              ORRS     r1,r1,r2
00000e  6041              STR      r1,[r0,#4]
;;;131    }
000010  4770              BX       lr
;;;132    
                          ENDP

000012  0000              DCW      0x0000
                  |L5.20|
                          DCD      0x00010001

                          AREA ||i.UART_EnableInt||, CODE, READONLY, ALIGN=1

                  UART_EnableInt PROC
;;;150     */
;;;151    void UART_EnableInt(UART_T*  uart, uint32_t u32InterruptFlag )
000000  68c2              LDR      r2,[r0,#0xc]
;;;152    {
;;;153        uart->IER |= u32InterruptFlag;
000002  430a              ORRS     r2,r2,r1
000004  60c2              STR      r2,[r0,#0xc]
;;;154    }
000006  4770              BX       lr
;;;155    
                          ENDP


                          AREA ||i.UART_Open||, CODE, READONLY, ALIGN=2

                  UART_Open PROC
;;;164     */
;;;165    void UART_Open(UART_T* uart, uint32_t u32baudrate)
000000  b57f              PUSH     {r0-r6,lr}
;;;166    {
;;;167        uint8_t u8UartClkSrcSel;
;;;168        uint32_t u32ClkTbl[4] = {__HXT, __LXT, 0, __HIRC12M};
000002  4b1d              LDR      r3,|L7.120|
000004  4604              MOV      r4,r0                 ;166
000006  460e              MOV      r6,r1                 ;166
000008  cb0f              LDM      r3,{r0-r3}
;;;169        uint32_t u32Baud_Div;
;;;170        uint32_t u32SrcFreq;
;;;171        uint32_t u32SrcFreqDiv;
;;;172    
;;;173        u8UartClkSrcSel = (CLK->CLKSEL1 & CLK_CLKSEL1_UART_S_Msk) >> CLK_CLKSEL1_UART_S_Pos;
00000a  466d              MOV      r5,sp
00000c  c50f              STM      r5!,{r0-r3}
00000e  491b              LDR      r1,|L7.124|
000010  6948              LDR      r0,[r1,#0x14]
000012  0780              LSLS     r0,r0,#30
000014  0f80              LSRS     r0,r0,#30
;;;174    
;;;175        if( (u8UartClkSrcSel == 0x3) && (CLK->PWRCTL & CLK_PWRCTL_HIRC_FSEL_Msk) )
000016  2803              CMP      r0,#3
000018  d104              BNE      |L7.36|
00001a  680a              LDR      r2,[r1,#0]
00001c  04d2              LSLS     r2,r2,#19
00001e  d501              BPL      |L7.36|
;;;176            u32SrcFreq = __HIRC16M;
000020  4817              LDR      r0,|L7.128|
000022  e002              B        |L7.42|
                  |L7.36|
;;;177        else
;;;178            u32SrcFreq = u32ClkTbl[u8UartClkSrcSel];
000024  0080              LSLS     r0,r0,#2
000026  466a              MOV      r2,sp
000028  5810              LDR      r0,[r2,r0]
                  |L7.42|
;;;179    
;;;180        u32SrcFreqDiv = (((CLK->CLKDIV0 & CLK_CLKDIV0_UART_N_Msk) >> CLK_CLKDIV0_UART_N_Pos) + 1);
00002a  69c9              LDR      r1,[r1,#0x1c]
00002c  0509              LSLS     r1,r1,#20
00002e  0f0d              LSRS     r5,r1,#28
000030  1c6d              ADDS     r5,r5,#1
;;;181    
;;;182        if(u32SrcFreq == 0) {
000032  2800              CMP      r0,#0
000034  d101              BNE      |L7.58|
;;;183            u32SrcFreq = SysGet_PLLClockFreq() / u32SrcFreqDiv;
000036  f7fffffe          BL       SysGet_PLLClockFreq
                  |L7.58|
;;;184        } else {
;;;185            u32SrcFreq = u32SrcFreq / u32SrcFreqDiv;
00003a  4629              MOV      r1,r5
00003c  f7fffffe          BL       __aeabi_uidivmod
000040  4605              MOV      r5,r0
;;;186        }
;;;187    
;;;188        uart->FUN_SEL = UART_FUNC_SEL_UART;
000042  2000              MOVS     r0,#0
000044  63a0              STR      r0,[r4,#0x38]
;;;189        uart->TLCTL = UART_WORD_LEN_8 | UART_PARITY_NONE | UART_STOP_BIT_1 |
000046  2003              MOVS     r0,#3
000048  60a0              STR      r0,[r4,#8]
;;;190                      UART_TLCTL_RFITL_1BYTE | UART_TLCTL_RTS_TRI_LEV_1BYTE;
;;;191    
;;;192        if(u32baudrate != 0) {
00004a  2e00              CMP      r6,#0
00004c  d013              BEQ      |L7.118|
;;;193            u32Baud_Div = UART_BAUD_MODE0_DIVIDER(u32SrcFreq, u32baudrate);
00004e  0870              LSRS     r0,r6,#1
000050  1940              ADDS     r0,r0,r5
000052  4631              MOV      r1,r6
000054  f7fffffe          BL       __aeabi_uidivmod
;;;194    
;;;195            if(u32Baud_Div > 0xFFFF)
000058  490a              LDR      r1,|L7.132|
00005a  1e40              SUBS     r0,r0,#1              ;193
00005c  4288              CMP      r0,r1
00005e  d909              BLS      |L7.116|
;;;196                uart->BAUD = (UART_BAUD_MODE1 | UART_BAUD_MODE1_DIVIDER(u32SrcFreq, u32baudrate));
000060  00f0              LSLS     r0,r6,#3
000062  1940              ADDS     r0,r0,r5
000064  4631              MOV      r1,r6
000066  f7fffffe          BL       __aeabi_uidivmod
00006a  0900              LSRS     r0,r0,#4
00006c  1e40              SUBS     r0,r0,#1
00006e  2101              MOVS     r1,#1
000070  07c9              LSLS     r1,r1,#31
000072  4308              ORRS     r0,r0,r1
                  |L7.116|
;;;197            else
;;;198                uart->BAUD = (UART_BAUD_MODE0 | u32Baud_Div);
000074  6260              STR      r0,[r4,#0x24]
                  |L7.118|
;;;199        }
;;;200    }
000076  bd7f              POP      {r0-r6,pc}
;;;201    
                          ENDP

                  |L7.120|
                          DCD      ||.constdata||
                  |L7.124|
                          DCD      0x50000200
                  |L7.128|
                          DCD      0x00f42400
                  |L7.132|
                          DCD      0x0000ffff

                          AREA ||i.UART_Read||, CODE, READONLY, ALIGN=1

                  UART_Read PROC
;;;212     */
;;;213    uint32_t UART_Read(UART_T* uart, uint8_t *pu8RxBuf, uint32_t u32ReadBytes)
000000  b570              PUSH     {r4-r6,lr}
;;;214    {
000002  4604              MOV      r4,r0
;;;215        uint32_t  u32Count, u32delayno;
;;;216    
;;;217        for(u32Count=0; u32Count < u32ReadBytes; u32Count++) {
000004  2000              MOVS     r0,#0
;;;218            u32delayno = 0;
;;;219    
;;;220            while(uart->FSR & UART_FSR_RX_EMPTY_F_Msk) { /* Check RX empty => failed */
;;;221                u32delayno++;
;;;222                if( u32delayno >= 0x40000000 )
000006  2501              MOVS     r5,#1
000008  07ad              LSLS     r5,r5,#30
00000a  e00c              B        |L8.38|
                  |L8.12|
00000c  2300              MOVS     r3,#0                 ;218
00000e  e004              B        |L8.26|
                  |L8.16|
000010  1c5b              ADDS     r3,r3,#1              ;221
000012  42ab              CMP      r3,r5
000014  d301              BCC      |L8.26|
;;;223                    return FALSE;
000016  2000              MOVS     r0,#0
;;;224            }
;;;225            pu8RxBuf[u32Count] = uart->RBR;    /* Get Data from UART RX  */
;;;226        }
;;;227    
;;;228        return u32Count;
;;;229    
;;;230    }
000018  bd70              POP      {r4-r6,pc}
                  |L8.26|
00001a  69a6              LDR      r6,[r4,#0x18]         ;220
00001c  07b6              LSLS     r6,r6,#30             ;220
00001e  d4f7              BMI      |L8.16|
000020  6823              LDR      r3,[r4,#0]            ;225
000022  540b              STRB     r3,[r1,r0]            ;225
000024  1c40              ADDS     r0,r0,#1              ;217
                  |L8.38|
000026  4290              CMP      r0,r2                 ;217
000028  d3f0              BCC      |L8.12|
00002a  bd70              POP      {r4-r6,pc}
;;;231    
                          ENDP


                          AREA ||i.UART_SelectIrDAMode||, CODE, READONLY, ALIGN=2

                  UART_SelectIrDAMode PROC
;;;304     */
;;;305    void UART_SelectIrDAMode(UART_T* uart, uint32_t u32Buadrate, uint32_t u32Direction)
000000  4909              LDR      r1,|L9.40|
;;;306    {
;;;307        uart->BAUD = UART_BAUD_MODE1 | UART_BAUD_MODE1_DIVIDER(12000000, 57600);
000002  6241              STR      r1,[r0,#0x24]
;;;308    
;;;309        uart->IRCR    &=  ~UART_IRCR_INV_TX_Msk;
000004  6b01              LDR      r1,[r0,#0x30]
000006  2320              MOVS     r3,#0x20
000008  4399              BICS     r1,r1,r3
00000a  6301              STR      r1,[r0,#0x30]
;;;310        uart->IRCR |=     UART_IRCR_INV_RX_Msk;
00000c  6b01              LDR      r1,[r0,#0x30]
00000e  2340              MOVS     r3,#0x40
000010  4319              ORRS     r1,r1,r3
000012  6301              STR      r1,[r0,#0x30]
;;;311        uart->IRCR    = u32Direction ? uart->IRCR | UART_IRCR_TX_SELECT_Msk : uart->IRCR &~ UART_IRCR_TX_SELECT_Msk;
000014  2302              MOVS     r3,#2
000016  6b01              LDR      r1,[r0,#0x30]
000018  2a00              CMP      r2,#0
00001a  d001              BEQ      |L9.32|
00001c  4319              ORRS     r1,r1,r3
00001e  e000              B        |L9.34|
                  |L9.32|
000020  4399              BICS     r1,r1,r3
                  |L9.34|
000022  6301              STR      r1,[r0,#0x30]
;;;312        uart->FUN_SEL = (0x2 << UART_FUN_SEL_FUN_SEL_Pos);
000024  6383              STR      r3,[r0,#0x38]
;;;313    }
000026  4770              BX       lr
;;;314    
                          ENDP

                  |L9.40|
                          DCD      0x8000000c

                          AREA ||i.UART_SelectRS485Mode||, CODE, READONLY, ALIGN=1

                  UART_SelectRS485Mode PROC
;;;324     */
;;;325    void UART_SelectRS485Mode(UART_T* uart, uint32_t u32Mode, uint32_t u32Addr)
000000  2303              MOVS     r3,#3
;;;326    {
;;;327        uart->FUN_SEL = UART_FUNC_SEL_RS485;
000002  6383              STR      r3,[r0,#0x38]
;;;328        uart->ALT_CTL = 0;
000004  2300              MOVS     r3,#0
000006  6343              STR      r3,[r0,#0x34]
;;;329        uart->ALT_CTL |= u32Mode | (u32Addr << UART_ALT_CTL_ADDR_PID_MATCH_Pos);
000008  6b43              LDR      r3,[r0,#0x34]
00000a  0612              LSLS     r2,r2,#24
00000c  430a              ORRS     r2,r2,r1
00000e  4313              ORRS     r3,r3,r2
000010  6343              STR      r3,[r0,#0x34]
;;;330    }
000012  4770              BX       lr
;;;331    
                          ENDP


                          AREA ||i.UART_SetLine_Config||, CODE, READONLY, ALIGN=2

                  UART_SetLine_Config PROC
;;;244     */
;;;245    void UART_SetLine_Config(UART_T* uart, uint32_t u32baudrate, uint32_t u32data_width, uint32_t u32parity, uint32_t  u32stop_bits)
000000  b5ff              PUSH     {r0-r7,lr}
;;;246    {
;;;247        uint8_t u8UartClkSrcSel;
;;;248        uint32_t u32ClkTbl[4] = {__HXT, __LXT, 0, __HIRC12M};
000002  4b20              LDR      r3,|L11.132|
000004  4604              MOV      r4,r0                 ;246
000006  460d              MOV      r5,r1                 ;246
000008  4616              MOV      r6,r2                 ;246
00000a  3310              ADDS     r3,r3,#0x10
00000c  cb0f              LDM      r3,{r0-r3}
00000e  b085              SUB      sp,sp,#0x14           ;246
;;;249        uint32_t u32Baud_Div = 0;
;;;250        uint32_t u32SrcFreq;
;;;251        uint32_t u32SrcFreqDiv;
;;;252    
;;;253        u8UartClkSrcSel = (CLK->CLKSEL1 & CLK_CLKSEL1_UART_S_Msk) >> CLK_CLKSEL1_UART_S_Pos;
000010  466f              MOV      r7,sp
000012  c70f              STM      r7!,{r0-r3}
000014  491c              LDR      r1,|L11.136|
000016  6948              LDR      r0,[r1,#0x14]
000018  0780              LSLS     r0,r0,#30
00001a  0f80              LSRS     r0,r0,#30
;;;254    
;;;255        if( (u8UartClkSrcSel == 0x3) && (CLK->PWRCTL & CLK_PWRCTL_HIRC_FSEL_Msk) )
00001c  2803              CMP      r0,#3
00001e  d104              BNE      |L11.42|
000020  680a              LDR      r2,[r1,#0]
000022  04d2              LSLS     r2,r2,#19
000024  d501              BPL      |L11.42|
;;;256            u32SrcFreq = __HIRC16M;
000026  4819              LDR      r0,|L11.140|
000028  e002              B        |L11.48|
                  |L11.42|
;;;257        else
;;;258            u32SrcFreq = u32ClkTbl[u8UartClkSrcSel];
00002a  0080              LSLS     r0,r0,#2
00002c  466a              MOV      r2,sp
00002e  5810              LDR      r0,[r2,r0]
                  |L11.48|
;;;259    
;;;260        u32SrcFreqDiv = (((CLK->CLKDIV0 & CLK_CLKDIV0_UART_N_Msk) >> CLK_CLKDIV0_UART_N_Pos) + 1);
000030  69c9              LDR      r1,[r1,#0x1c]
000032  0509              LSLS     r1,r1,#20
000034  0f0f              LSRS     r7,r1,#28
000036  1c7f              ADDS     r7,r7,#1
;;;261    
;;;262        if(u32SrcFreq == 0) {
000038  2800              CMP      r0,#0
00003a  d101              BNE      |L11.64|
;;;263            u32SrcFreq = SysGet_PLLClockFreq() / u32SrcFreqDiv;
00003c  f7fffffe          BL       SysGet_PLLClockFreq
                  |L11.64|
;;;264        } else {
;;;265            u32SrcFreq = u32SrcFreq / u32SrcFreqDiv;
000040  4639              MOV      r1,r7
000042  f7fffffe          BL       __aeabi_uidivmod
000046  4607              MOV      r7,r0
;;;266        }
;;;267    
;;;268        if(u32baudrate != 0) {
000048  2d00              CMP      r5,#0
00004a  d013              BEQ      |L11.116|
;;;269            u32Baud_Div = UART_BAUD_MODE0_DIVIDER(u32SrcFreq, u32baudrate);
00004c  0868              LSRS     r0,r5,#1
00004e  19c0              ADDS     r0,r0,r7
000050  4629              MOV      r1,r5
000052  f7fffffe          BL       __aeabi_uidivmod
;;;270    
;;;271            if(u32Baud_Div > 0xFFFF)
000056  490e              LDR      r1,|L11.144|
000058  1e40              SUBS     r0,r0,#1              ;269
00005a  4288              CMP      r0,r1
00005c  d909              BLS      |L11.114|
;;;272                uart->BAUD = (UART_BAUD_MODE1 | UART_BAUD_MODE1_DIVIDER(u32SrcFreq, u32baudrate));
00005e  00e8              LSLS     r0,r5,#3
000060  19c0              ADDS     r0,r0,r7
000062  4629              MOV      r1,r5
000064  f7fffffe          BL       __aeabi_uidivmod
000068  0900              LSRS     r0,r0,#4
00006a  1e40              SUBS     r0,r0,#1
00006c  2101              MOVS     r1,#1
00006e  07c9              LSLS     r1,r1,#31
000070  4308              ORRS     r0,r0,r1
                  |L11.114|
;;;273            else
;;;274                uart->BAUD = (UART_BAUD_MODE0 | u32Baud_Div);
000072  6260              STR      r0,[r4,#0x24]
                  |L11.116|
;;;275        }
;;;276    
;;;277        uart->TLCTL = u32data_width | u32parity | u32stop_bits;
000074  9808              LDR      r0,[sp,#0x20]
000076  4306              ORRS     r6,r6,r0
000078  980e              LDR      r0,[sp,#0x38]
00007a  4306              ORRS     r6,r6,r0
00007c  60a6              STR      r6,[r4,#8]
;;;278    }
00007e  b009              ADD      sp,sp,#0x24
000080  bdf0              POP      {r4-r7,pc}
;;;279    
                          ENDP

000082  0000              DCW      0x0000
                  |L11.132|
                          DCD      ||.constdata||
                  |L11.136|
                          DCD      0x50000200
                  |L11.140|
                          DCD      0x00f42400
                  |L11.144|
                          DCD      0x0000ffff

                          AREA ||i.UART_SetTimeoutCnt||, CODE, READONLY, ALIGN=1

                  UART_SetTimeoutCnt PROC
;;;288     */
;;;289    void UART_SetTimeoutCnt(UART_T* uart, uint32_t u32TOC)
000000  6a02              LDR      r2,[r0,#0x20]
;;;290    {
;;;291        uart->TMCTL = (uart->TMCTL & ~UART_TMCTL_TOIC_Msk)| (u32TOC);
000002  0a52              LSRS     r2,r2,#9
000004  0252              LSLS     r2,r2,#9
000006  430a              ORRS     r2,r2,r1
000008  6202              STR      r2,[r0,#0x20]
;;;292        uart->IER |= UART_IER_RTO_IE_Msk;
00000a  68c1              LDR      r1,[r0,#0xc]
00000c  2210              MOVS     r2,#0x10
00000e  4311              ORRS     r1,r1,r2
000010  60c1              STR      r1,[r0,#0xc]
;;;293    }
000012  4770              BX       lr
;;;294    
                          ENDP


                          AREA ||i.UART_Write||, CODE, READONLY, ALIGN=1

                  UART_Write PROC
;;;341     */
;;;342    uint32_t UART_Write(UART_T* uart,uint8_t *pu8TxBuf, uint32_t u32WriteBytes)
000000  b570              PUSH     {r4-r6,lr}
;;;343    {
000002  4604              MOV      r4,r0
;;;344        uint32_t  u32Count, u32delayno;
;;;345    
;;;346        for(u32Count=0; u32Count != u32WriteBytes; u32Count++) {
000004  2000              MOVS     r0,#0
;;;347            u32delayno = 0;
;;;348            while((uart->FSR & UART_FSR_TX_EMPTY_F_Msk) == 0) { /* Wait Tx empty and Time-out manner */
;;;349                u32delayno++;
;;;350                if( u32delayno >= 0x40000000 )
000006  2501              MOVS     r5,#1
000008  07ad              LSLS     r5,r5,#30
00000a  e00c              B        |L13.38|
                  |L13.12|
00000c  2300              MOVS     r3,#0                 ;347
00000e  e004              B        |L13.26|
                  |L13.16|
000010  1c5b              ADDS     r3,r3,#1              ;349
000012  42ab              CMP      r3,r5
000014  d301              BCC      |L13.26|
;;;351                    return FALSE;
000016  2000              MOVS     r0,#0
;;;352            }
;;;353            uart->THR = pu8TxBuf[u32Count];    /* Send UART Data from buffer */
;;;354        }
;;;355    
;;;356        return u32Count;
;;;357    
;;;358    }
000018  bd70              POP      {r4-r6,pc}
                  |L13.26|
00001a  69a6              LDR      r6,[r4,#0x18]         ;348
00001c  05b6              LSLS     r6,r6,#22             ;348
00001e  d5f7              BPL      |L13.16|
000020  5c0b              LDRB     r3,[r1,r0]            ;353
000022  6023              STR      r3,[r4,#0]            ;353
000024  1c40              ADDS     r0,r0,#1              ;346
                  |L13.38|
000026  4290              CMP      r0,r2                 ;346
000028  d1f0              BNE      |L13.12|
00002a  bd70              POP      {r4-r6,pc}
;;;359    
                          ENDP


                          AREA ||.constdata||, DATA, READONLY, ALIGN=2

                          DCD      0x00b71b00
                          DCD      0x00008000
                          DCD      0x00000000
                          DCD      0x00b71b00
                          DCD      0x00b71b00
                          DCD      0x00008000
                          DCD      0x00000000
                          DCD      0x00b71b00

;*** Start embedded assembler ***

#line 1 "..\\..\\..\\..\\Library\\StdDriver\\src\\uart.c"
	AREA ||.rev16_text||, CODE, READONLY
	THUMB
	EXPORT |__asm___6_uart_c_f12f5b44____REV16|
#line 118 "..\\..\\..\\..\\Library\\CMSIS\\Include\\core_cmInstr.h"
|__asm___6_uart_c_f12f5b44____REV16| PROC
#line 119

 rev16 r0, r0
 bx lr
	ENDP
	AREA ||.revsh_text||, CODE, READONLY
	THUMB
	EXPORT |__asm___6_uart_c_f12f5b44____REVSH|
#line 132
|__asm___6_uart_c_f12f5b44____REVSH| PROC
#line 133

 revsh r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***
