; 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 --feedback=.\obj\PWM_Capture.fed --cpu=Cortex-M0 --apcs=interwork -O0 -I..\..\..\..\Library\CMSIS\Include -I..\..\..\..\Library\Device\Nuvoton\Nano100Series\Include -I..\..\..\..\Library\StdDriver\inc -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  2204              MOVS     r2,#4
;;;41     {
;;;42     
;;;43         if(u32InterruptFlag & UART_ISR_RLS_IS_Msk) { /* clear Receive Line Status Interrupt */
000002  4211              TST      r1,r2
000004  d007              BEQ      |L1.22|
;;;44             uart->FSR |= UART_FSR_BI_F_Msk | UART_FSR_FE_F_Msk | UART_FSR_FE_F_Msk;
000006  6982              LDR      r2,[r0,#0x18]
000008  2360              MOVS     r3,#0x60
00000a  431a              ORRS     r2,r2,r3
00000c  6182              STR      r2,[r0,#0x18]
;;;45             uart->TRSR |= UART_TRSR_RS485_ADDET_F_Msk;
00000e  6942              LDR      r2,[r0,#0x14]
000010  2301              MOVS     r3,#1
000012  431a              ORRS     r2,r2,r3
000014  6142              STR      r2,[r0,#0x14]
                  |L1.22|
;;;46         }
;;;47     
;;;48         if(u32InterruptFlag & UART_ISR_MODEM_IS_Msk)  /* clear Modem Interrupt */
000016  2208              MOVS     r2,#8
000018  4211              TST      r1,r2
00001a  d004              BEQ      |L1.38|
;;;49             uart->MCSR |= UART_MCSR_DCT_F_Msk;
00001c  69c2              LDR      r2,[r0,#0x1c]
00001e  2301              MOVS     r3,#1
000020  049b              LSLS     r3,r3,#18
000022  431a              ORRS     r2,r2,r3
000024  61c2              STR      r2,[r0,#0x1c]
                  |L1.38|
;;;50     
;;;51         if(u32InterruptFlag & UART_ISR_BUF_ERR_IS_Msk) { /* clear Buffer Error Interrupt */
000026  2220              MOVS     r2,#0x20
000028  4211              TST      r1,r2
00002a  d004              BEQ      |L1.54|
;;;52             uart->FSR |= UART_FSR_RX_OVER_F_Msk | UART_FSR_TX_OVER_F_Msk;
00002c  6982              LDR      r2,[r0,#0x18]
00002e  23ff              MOVS     r3,#0xff
000030  3302              ADDS     r3,#2
000032  431a              ORRS     r2,r2,r3
000034  6182              STR      r2,[r0,#0x18]
                  |L1.54|
;;;53         }
;;;54     
;;;55         if(u32InterruptFlag & UART_ISR_WAKE_IS_Msk) { /* clear wake up Interrupt */
000036  2240              MOVS     r2,#0x40
000038  4211              TST      r1,r2
00003a  d003              BEQ      |L1.68|
;;;56             uart->ISR |= UART_ISR_WAKE_IS_Msk;
00003c  6902              LDR      r2,[r0,#0x10]
00003e  2340              MOVS     r3,#0x40
000040  431a              ORRS     r2,r2,r3
000042  6102              STR      r2,[r0,#0x10]
                  |L1.68|
;;;57         }
;;;58     
;;;59         if(u32InterruptFlag & UART_ISR_ABAUD_IS_Msk) { /* clear auto-baud rate Interrupt */
000044  2280              MOVS     r2,#0x80
000046  4211              TST      r1,r2
000048  d003              BEQ      |L1.82|
;;;60             uart->TRSR |= UART_TRSR_ABAUD_TOUT_F_Msk | UART_TRSR_ABAUD_F_Msk;
00004a  6942              LDR      r2,[r0,#0x14]
00004c  2306              MOVS     r3,#6
00004e  431a              ORRS     r2,r2,r3
000050  6142              STR      r2,[r0,#0x14]
                  |L1.82|
;;;61         }
;;;62     
;;;63         if(u32InterruptFlag & UART_ISR_LIN_IS_Msk) { /* clear LIN break Interrupt */
000052  22ff              MOVS     r2,#0xff
000054  3201              ADDS     r2,#1
000056  4211              TST      r1,r2
000058  d003              BEQ      |L1.98|
;;;64             uart->TRSR |= UART_TRSR_LIN_TX_F_Msk | UART_TRSR_LIN_RX_F_Msk | UART_TRSR_BIT_ERR_F_Msk;
00005a  6942              LDR      r2,[r0,#0x14]
00005c  2338              MOVS     r3,#0x38
00005e  431a              ORRS     r2,r2,r3
000060  6142              STR      r2,[r0,#0x14]
                  |L1.98|
;;;65         }
;;;66     
;;;67     }
000062  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
;;;113     */
;;;114    void UART_DisableInt(UART_T*  uart, uint32_t u32InterruptFlag )
000000  68c2              LDR      r2,[r0,#0xc]
;;;115    {
;;;116        uart->IER &= ~ u32InterruptFlag;
000002  438a              BICS     r2,r2,r1
000004  60c2              STR      r2,[r0,#0xc]
;;;117    }
000006  4770              BX       lr
;;;118    
                          ENDP


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

                  UART_EnableFlowCtrl PROC
;;;127     */
;;;128    void UART_EnableFlowCtrl(UART_T* uart )
000000  69c1              LDR      r1,[r0,#0x1c]
;;;129    {
;;;130        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]
;;;131        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]
;;;132    }
000010  4770              BX       lr
;;;133    
                          ENDP

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

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

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


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

                  UART_Open PROC
;;;166     */
;;;167    void UART_Open(UART_T* uart, uint32_t u32baudrate)
000000  b5f0              PUSH     {r4-r7,lr}
;;;168    {
000002  b087              SUB      sp,sp,#0x1c
000004  4604              MOV      r4,r0
000006  460d              MOV      r5,r1
;;;169        uint8_t u8UartClkSrcSel;
;;;170        uint32_t u32ClkTbl[4] = {__HXT, __LXT, 0, __HIRC12M};
000008  4822              LDR      r0,|L7.148|
00000a  4601              MOV      r1,r0
00000c  c90e              LDM      r1,{r1-r3}
00000e  68c0              LDR      r0,[r0,#0xc]  ; <Data1>
000010  ae02              ADD      r6,sp,#8
000012  c60e              STM      r6!,{r1-r3}
000014  9005              STR      r0,[sp,#0x14]
;;;171        uint32_t u32Baud_Div;
;;;172        uint32_t u32SrcFreq;
;;;173        uint32_t u32SrcFreqDiv;
;;;174    
;;;175        u8UartClkSrcSel = (CLK->CLKSEL1 & CLK_CLKSEL1_UART_S_Msk) >> CLK_CLKSEL1_UART_S_Pos;
000016  4820              LDR      r0,|L7.152|
000018  6940              LDR      r0,[r0,#0x14]
00001a  0780              LSLS     r0,r0,#30
00001c  0f80              LSRS     r0,r0,#30
00001e  9006              STR      r0,[sp,#0x18]
;;;176    
;;;177        u32SrcFreq = u32ClkTbl[u8UartClkSrcSel];
000020  9806              LDR      r0,[sp,#0x18]
000022  0080              LSLS     r0,r0,#2
000024  a902              ADD      r1,sp,#8
000026  580f              LDR      r7,[r1,r0]
;;;178    
;;;179        u32SrcFreqDiv = (((CLK->CLKDIV0 & CLK_CLKDIV0_UART_N_Msk) >> CLK_CLKDIV0_UART_N_Pos) + 1);
000028  481b              LDR      r0,|L7.152|
00002a  69c0              LDR      r0,[r0,#0x1c]
00002c  210f              MOVS     r1,#0xf
00002e  0209              LSLS     r1,r1,#8
000030  4008              ANDS     r0,r0,r1
000032  0a00              LSRS     r0,r0,#8
000034  1c40              ADDS     r0,r0,#1
000036  9001              STR      r0,[sp,#4]
;;;180    
;;;181        if(u32SrcFreq == 0) {
000038  2f00              CMP      r7,#0
00003a  d107              BNE      |L7.76|
;;;182            u32SrcFreq = SysGet_PLLClockFreq() / u32SrcFreqDiv;
00003c  f7fffffe          BL       SysGet_PLLClockFreq
000040  9000              STR      r0,[sp,#0]
000042  9901              LDR      r1,[sp,#4]
000044  f7fffffe          BL       __aeabi_uidivmod
000048  4607              MOV      r7,r0
00004a  e004              B        |L7.86|
                  |L7.76|
;;;183        } else {
;;;184            u32SrcFreq = u32SrcFreq / u32SrcFreqDiv;
00004c  4638              MOV      r0,r7
00004e  9901              LDR      r1,[sp,#4]
000050  f7fffffe          BL       __aeabi_uidivmod
000054  4607              MOV      r7,r0
                  |L7.86|
;;;185        }
;;;186    
;;;187        uart->FUN_SEL = UART_FUNC_SEL_UART;
000056  2000              MOVS     r0,#0
000058  63a0              STR      r0,[r4,#0x38]
;;;188        uart->TLCTL = UART_WORD_LEN_8 | UART_PARITY_NONE | UART_STOP_BIT_1 |
00005a  2003              MOVS     r0,#3
00005c  60a0              STR      r0,[r4,#8]
;;;189                      UART_TLCTL_RFITL_1BYTE | UART_TLCTL_RTS_TRI_LEV_1BYTE;
;;;190    
;;;191        if(u32baudrate != 0) {
00005e  2d00              CMP      r5,#0
000060  d015              BEQ      |L7.142|
;;;192            u32Baud_Div = UART_BAUD_MODE0_DIVIDER(u32SrcFreq, u32baudrate);
000062  0869              LSRS     r1,r5,#1
000064  19c8              ADDS     r0,r1,r7
000066  4629              MOV      r1,r5
000068  f7fffffe          BL       __aeabi_uidivmod
00006c  1e46              SUBS     r6,r0,#1
;;;193    
;;;194            if(u32Baud_Div > 0xFFFF)
00006e  480b              LDR      r0,|L7.156|
000070  4286              CMP      r6,r0
000072  d90b              BLS      |L7.140|
;;;195                uart->BAUD = (UART_BAUD_MODE1 | UART_BAUD_MODE1_DIVIDER(u32SrcFreq, u32baudrate));
000074  00e9              LSLS     r1,r5,#3
000076  19c8              ADDS     r0,r1,r7
000078  4629              MOV      r1,r5
00007a  f7fffffe          BL       __aeabi_uidivmod
00007e  0900              LSRS     r0,r0,#4
000080  1e40              SUBS     r0,r0,#1
000082  2101              MOVS     r1,#1
000084  07c9              LSLS     r1,r1,#31
000086  4308              ORRS     r0,r0,r1
000088  6260              STR      r0,[r4,#0x24]
00008a  e000              B        |L7.142|
                  |L7.140|
;;;196            else
;;;197                uart->BAUD = (UART_BAUD_MODE0 | u32Baud_Div);
00008c  6266              STR      r6,[r4,#0x24]
                  |L7.142|
;;;198        }
;;;199    }
00008e  b007              ADD      sp,sp,#0x1c
000090  bdf0              POP      {r4-r7,pc}
;;;200    
                          ENDP

000092  0000              DCW      0x0000
                  |L7.148|
                          DCD      ||.constdata||
                  |L7.152|
                          DCD      0x50000200
                  |L7.156|
                          DCD      0x0000ffff

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

                  UART_Read PROC
;;;211     */
;;;212    uint32_t UART_Read(UART_T* uart, uint8_t *pu8RxBuf, uint32_t u32ReadBytes)
000000  b570              PUSH     {r4-r6,lr}
;;;213    {
000002  4603              MOV      r3,r0
000004  460c              MOV      r4,r1
;;;214        uint32_t  u32Count, u32delayno;
;;;215    
;;;216        for(u32Count=0; u32Count < u32ReadBytes; u32Count++) {
000006  2100              MOVS     r1,#0
000008  e00f              B        |L8.42|
                  |L8.10|
;;;217            u32delayno = 0;
00000a  2500              MOVS     r5,#0
;;;218    
;;;219            while(uart->FSR & UART_FSR_RX_EMPTY_F_Msk) { /* Check RX empty => failed */
00000c  e006              B        |L8.28|
                  |L8.14|
;;;220                u32delayno++;
00000e  1c6d              ADDS     r5,r5,#1
;;;221                if( u32delayno >= 0x40000000 )
000010  2001              MOVS     r0,#1
000012  0780              LSLS     r0,r0,#30
000014  4285              CMP      r5,r0
000016  d301              BCC      |L8.28|
;;;222                    return FALSE;
000018  2000              MOVS     r0,#0
                  |L8.26|
;;;223            }
;;;224            pu8RxBuf[u32Count] = uart->RBR;    /* Get Data from UART RX  */
;;;225        }
;;;226    
;;;227        return u32Count;
;;;228    
;;;229    }
00001a  bd70              POP      {r4-r6,pc}
                  |L8.28|
00001c  6998              LDR      r0,[r3,#0x18]         ;219
00001e  2602              MOVS     r6,#2                 ;219
000020  4230              TST      r0,r6                 ;219
000022  d1f4              BNE      |L8.14|
000024  6818              LDR      r0,[r3,#0]            ;224
000026  5460              STRB     r0,[r4,r1]            ;224
000028  1c49              ADDS     r1,r1,#1              ;216
                  |L8.42|
00002a  4291              CMP      r1,r2                 ;216
00002c  d3ed              BCC      |L8.10|
00002e  4608              MOV      r0,r1                 ;227
000030  e7f3              B        |L8.26|
;;;230    
                          ENDP


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

                  UART_SelectIrDAMode PROC
;;;300     */
;;;301    void UART_SelectIrDAMode(UART_T* uart, uint32_t u32Buadrate, uint32_t u32Direction)
000000  b510              PUSH     {r4,lr}
;;;302    {
000002  460b              MOV      r3,r1
;;;303        uart->BAUD = UART_BAUD_MODE1 | UART_BAUD_MODE1_DIVIDER(12000000, 57600);
000004  490b              LDR      r1,|L9.52|
000006  6241              STR      r1,[r0,#0x24]
;;;304    
;;;305        uart->IRCR    &=  ~UART_IRCR_INV_TX_Msk;
000008  6b01              LDR      r1,[r0,#0x30]
00000a  2420              MOVS     r4,#0x20
00000c  43a1              BICS     r1,r1,r4
00000e  6301              STR      r1,[r0,#0x30]
;;;306        uart->IRCR |=     UART_IRCR_INV_RX_Msk;
000010  6b01              LDR      r1,[r0,#0x30]
000012  2440              MOVS     r4,#0x40
000014  4321              ORRS     r1,r1,r4
000016  6301              STR      r1,[r0,#0x30]
;;;307        uart->IRCR    = u32Direction ? uart->IRCR | UART_IRCR_TX_SELECT_Msk : uart->IRCR &~ UART_IRCR_TX_SELECT_Msk;
000018  2a00              CMP      r2,#0
00001a  d003              BEQ      |L9.36|
00001c  6b01              LDR      r1,[r0,#0x30]
00001e  2402              MOVS     r4,#2
000020  4321              ORRS     r1,r1,r4
000022  e002              B        |L9.42|
                  |L9.36|
000024  6b01              LDR      r1,[r0,#0x30]
000026  2402              MOVS     r4,#2
000028  43a1              BICS     r1,r1,r4
                  |L9.42|
00002a  6301              STR      r1,[r0,#0x30]
;;;308        uart->FUN_SEL = (0x2 << UART_FUN_SEL_FUN_SEL_Pos);
00002c  2102              MOVS     r1,#2
00002e  6381              STR      r1,[r0,#0x38]
;;;309    }
000030  bd10              POP      {r4,pc}
;;;310    
                          ENDP

000032  0000              DCW      0x0000
                  |L9.52|
                          DCD      0x8000000c

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

                  UART_SelectRS485Mode PROC
;;;320     */
;;;321    void UART_SelectRS485Mode(UART_T* uart, uint32_t u32Mode, uint32_t u32Addr)
000000  b510              PUSH     {r4,lr}
;;;322    {
;;;323        uart->FUN_SEL = UART_FUNC_SEL_RS485;
000002  2303              MOVS     r3,#3
000004  6383              STR      r3,[r0,#0x38]
;;;324        uart->ALT_CTL = 0;
000006  2300              MOVS     r3,#0
000008  6343              STR      r3,[r0,#0x34]
;;;325        uart->ALT_CTL |= u32Mode | (u32Addr << UART_ALT_CTL_ADDR_PID_MATCH_Pos);
00000a  6b43              LDR      r3,[r0,#0x34]
00000c  0614              LSLS     r4,r2,#24
00000e  430c              ORRS     r4,r4,r1
000010  4323              ORRS     r3,r3,r4
000012  6343              STR      r3,[r0,#0x34]
;;;326    }
000014  bd10              POP      {r4,pc}
;;;327    
                          ENDP


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

                  UART_SetLine_Config PROC
;;;243     */
;;;244    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}
;;;245    {
000002  b087              SUB      sp,sp,#0x1c
000004  4604              MOV      r4,r0
000006  460d              MOV      r5,r1
;;;246        uint8_t u8UartClkSrcSel;
;;;247        uint32_t u32ClkTbl[4] = {__HXT, __LXT, 0, __HIRC12M};
000008  4823              LDR      r0,|L11.152|
00000a  4601              MOV      r1,r0
00000c  c90e              LDM      r1,{r1-r3}
00000e  68c0              LDR      r0,[r0,#0xc]  ; <Data2>
000010  ae02              ADD      r6,sp,#8
000012  c60e              STM      r6!,{r1-r3}
000014  9005              STR      r0,[sp,#0x14]
;;;248        uint32_t u32Baud_Div = 0;
000016  2700              MOVS     r7,#0
;;;249        uint32_t u32SrcFreq;
;;;250        uint32_t u32SrcFreqDiv;
;;;251    
;;;252        u8UartClkSrcSel = (CLK->CLKSEL1 & CLK_CLKSEL1_UART_S_Msk) >> CLK_CLKSEL1_UART_S_Pos;
000018  4820              LDR      r0,|L11.156|
00001a  6940              LDR      r0,[r0,#0x14]
00001c  0780              LSLS     r0,r0,#30
00001e  0f80              LSRS     r0,r0,#30
000020  9006              STR      r0,[sp,#0x18]
;;;253    
;;;254        u32SrcFreq = u32ClkTbl[u8UartClkSrcSel];
000022  9806              LDR      r0,[sp,#0x18]
000024  0080              LSLS     r0,r0,#2
000026  a902              ADD      r1,sp,#8
000028  580e              LDR      r6,[r1,r0]
;;;255    
;;;256        u32SrcFreqDiv = (((CLK->CLKDIV0 & CLK_CLKDIV0_UART_N_Msk) >> CLK_CLKDIV0_UART_N_Pos) + 1);
00002a  481c              LDR      r0,|L11.156|
00002c  69c0              LDR      r0,[r0,#0x1c]
00002e  210f              MOVS     r1,#0xf
000030  0209              LSLS     r1,r1,#8
000032  4008              ANDS     r0,r0,r1
000034  0a00              LSRS     r0,r0,#8
000036  1c40              ADDS     r0,r0,#1
000038  9001              STR      r0,[sp,#4]
;;;257    
;;;258        if(u32SrcFreq == 0) {
00003a  2e00              CMP      r6,#0
00003c  d107              BNE      |L11.78|
;;;259            u32SrcFreq = SysGet_PLLClockFreq() / u32SrcFreqDiv;
00003e  f7fffffe          BL       SysGet_PLLClockFreq
000042  9000              STR      r0,[sp,#0]
000044  9901              LDR      r1,[sp,#4]
000046  f7fffffe          BL       __aeabi_uidivmod
00004a  4606              MOV      r6,r0
00004c  e004              B        |L11.88|
                  |L11.78|
;;;260        } else {
;;;261            u32SrcFreq = u32SrcFreq / u32SrcFreqDiv;
00004e  4630              MOV      r0,r6
000050  9901              LDR      r1,[sp,#4]
000052  f7fffffe          BL       __aeabi_uidivmod
000056  4606              MOV      r6,r0
                  |L11.88|
;;;262        }
;;;263    
;;;264        if(u32baudrate != 0) {
000058  2d00              CMP      r5,#0
00005a  d015              BEQ      |L11.136|
;;;265            u32Baud_Div = UART_BAUD_MODE0_DIVIDER(u32SrcFreq, u32baudrate);
00005c  0869              LSRS     r1,r5,#1
00005e  1988              ADDS     r0,r1,r6
000060  4629              MOV      r1,r5
000062  f7fffffe          BL       __aeabi_uidivmod
000066  1e47              SUBS     r7,r0,#1
;;;266    
;;;267            if(u32Baud_Div > 0xFFFF)
000068  480d              LDR      r0,|L11.160|
00006a  4287              CMP      r7,r0
00006c  d90b              BLS      |L11.134|
;;;268                uart->BAUD = (UART_BAUD_MODE1 | UART_BAUD_MODE1_DIVIDER(u32SrcFreq, u32baudrate));
00006e  00e9              LSLS     r1,r5,#3
000070  1988              ADDS     r0,r1,r6
000072  4629              MOV      r1,r5
000074  f7fffffe          BL       __aeabi_uidivmod
000078  0900              LSRS     r0,r0,#4
00007a  1e40              SUBS     r0,r0,#1
00007c  2101              MOVS     r1,#1
00007e  07c9              LSLS     r1,r1,#31
000080  4308              ORRS     r0,r0,r1
000082  6260              STR      r0,[r4,#0x24]
000084  e000              B        |L11.136|
                  |L11.134|
;;;269            else
;;;270                uart->BAUD = (UART_BAUD_MODE0 | u32Baud_Div);
000086  6267              STR      r7,[r4,#0x24]
                  |L11.136|
;;;271        }
;;;272    
;;;273        uart->TLCTL = u32data_width | u32parity | u32stop_bits;
000088  990a              LDR      r1,[sp,#0x28]
00008a  9809              LDR      r0,[sp,#0x24]
00008c  4308              ORRS     r0,r0,r1
00008e  9910              LDR      r1,[sp,#0x40]
000090  4308              ORRS     r0,r0,r1
000092  60a0              STR      r0,[r4,#8]
;;;274    }
000094  b00b              ADD      sp,sp,#0x2c
000096  bdf0              POP      {r4-r7,pc}
;;;275    
                          ENDP

                  |L11.152|
                          DCD      ||.constdata||+0x10
                  |L11.156|
                          DCD      0x50000200
                  |L11.160|
                          DCD      0x0000ffff

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

                  UART_SetTimeoutCnt PROC
;;;284     */
;;;285    void UART_SetTimeoutCnt(UART_T* uart, uint32_t u32TOC)
000000  6a02              LDR      r2,[r0,#0x20]
;;;286    {
;;;287        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]
;;;288        uart->IER |= UART_IER_RTO_IE_Msk;
00000a  68c2              LDR      r2,[r0,#0xc]
00000c  2310              MOVS     r3,#0x10
00000e  431a              ORRS     r2,r2,r3
000010  60c2              STR      r2,[r0,#0xc]
;;;289    }
000012  4770              BX       lr
;;;290    
                          ENDP


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

                  UART_Write PROC
;;;337     */
;;;338    uint32_t UART_Write(UART_T* uart,uint8_t *pu8TxBuf, uint32_t u32WriteBytes)
000000  b570              PUSH     {r4-r6,lr}
;;;339    {
000002  4603              MOV      r3,r0
000004  460c              MOV      r4,r1
;;;340        uint32_t  u32Count, u32delayno;
;;;341    
;;;342        for(u32Count=0; u32Count != u32WriteBytes; u32Count++) {
000006  2100              MOVS     r1,#0
000008  e010              B        |L13.44|
                  |L13.10|
;;;343            u32delayno = 0;
00000a  2500              MOVS     r5,#0
;;;344            while((uart->FSR & UART_FSR_TX_EMPTY_F_Msk) == 0) { /* Wait Tx empty and Time-out manner */
00000c  e006              B        |L13.28|
                  |L13.14|
;;;345                u32delayno++;
00000e  1c6d              ADDS     r5,r5,#1
;;;346                if( u32delayno >= 0x40000000 )
000010  2001              MOVS     r0,#1
000012  0780              LSLS     r0,r0,#30
000014  4285              CMP      r5,r0
000016  d301              BCC      |L13.28|
;;;347                    return FALSE;
000018  2000              MOVS     r0,#0
                  |L13.26|
;;;348            }
;;;349            uart->THR = pu8TxBuf[u32Count];    /* Send UART Data from buffer */
;;;350        }
;;;351    
;;;352        return u32Count;
;;;353    
;;;354    }
00001a  bd70              POP      {r4-r6,pc}
                  |L13.28|
00001c  6998              LDR      r0,[r3,#0x18]         ;344
00001e  2601              MOVS     r6,#1                 ;344
000020  0276              LSLS     r6,r6,#9              ;344
000022  4230              TST      r0,r6                 ;344
000024  d0f3              BEQ      |L13.14|
000026  5c60              LDRB     r0,[r4,r1]            ;349
000028  6018              STR      r0,[r3,#0]            ;349
00002a  1c49              ADDS     r1,r1,#1              ;342
                  |L13.44|
00002c  4291              CMP      r1,r2                 ;342
00002e  d1ec              BNE      |L13.10|
000030  4608              MOV      r0,r1                 ;352
000032  e7f2              B        |L13.26|
;;;355    
                          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 ***
