; generated by ARM C/C++ Compiler, 4.1 [Build 894]
; commandline ArmCC [--list --split_sections --debug -c --asm --interleave -o.\obj\rtc.o --asm_dir=.\lst\ --list_dir=.\lst\ --depend=.\obj\rtc.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\rtc.crf ..\..\..\..\Library\StdDriver\src\rtc.c]
                          THUMB

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

                  RTC_32KCalibration PROC
;;;56      */
;;;57     void RTC_32KCalibration(int32_t i32FrequencyX10000)
000000  b510              PUSH     {r4,lr}
;;;58     {
000002  4602              MOV      r2,r0
;;;59         uint64_t u64Compensate;
;;;60     
;;;61         //u64Compensate = (uint64_t)(0x64000000000);
;;;62         u64Compensate = (uint64_t)(0x2710000000000);
;;;63         u64Compensate = (uint64_t)(u64Compensate / (uint64_t)i32FrequencyX10000);
000004  17c3              ASRS     r3,r0,#31
000006  2000              MOVS     r0,#0
000008  4908              LDR      r1,|L1.44|
00000a  f7fffffe          BL       __aeabi_uldivmod
;;;64     
;;;65         if(u64Compensate >= 0x400000) {
00000e  2301              MOVS     r3,#1
000010  059b              LSLS     r3,r3,#22
000012  2200              MOVS     r2,#0
000014  1ac3              SUBS     r3,r0,r3
000016  4191              SBCS     r1,r1,r2
000018  d300              BCC      |L1.28|
00001a  4805              LDR      r0,|L1.48|
                  |L1.28|
;;;66             u64Compensate = 0x3FFFFF;
;;;67         }
;;;68     
;;;69         RTC->AER = RTC_WRITE_KEY;
00001c  4906              LDR      r1,|L1.56|
00001e  4a05              LDR      r2,|L1.52|
000020  604a              STR      r2,[r1,#4]
                  |L1.34|
;;;70         while(!(RTC->AER & RTC_AER_ENF_Msk));
000022  684a              LDR      r2,[r1,#4]
000024  03d2              LSLS     r2,r2,#15
000026  d5fc              BPL      |L1.34|
;;;71     
;;;72         RTC->FCR = (uint32_t)u64Compensate;
000028  6088              STR      r0,[r1,#8]
;;;73     
;;;74     }
00002a  bd10              POP      {r4,pc}
;;;75     
                          ENDP

                  |L1.44|
                          DCD      0x00027100
                  |L1.48|
                          DCD      0x003fffff
                  |L1.52|
                          DCD      0x0000a965
                  |L1.56|
                          DCD      0x40008000

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

                  RTC_Close PROC
;;;792     */
;;;793    void RTC_Close (void)
000000  4802              LDR      r0,|L2.12|
;;;794    {
;;;795        CLK->APBCLK  &= ~CLK_APBCLK_RTC_EN_Msk;
000002  6881              LDR      r1,[r0,#8]
000004  2202              MOVS     r2,#2
000006  4391              BICS     r1,r1,r2
000008  6081              STR      r1,[r0,#8]
;;;796    }
00000a  4770              BX       lr
;;;797    
                          ENDP

                  |L2.12|
                          DCD      0x50000200

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

                  RTC_DisableInt PROC
;;;764     */
;;;765    void RTC_DisableInt(uint32_t u32IntFlagMask)
000000  490f              LDR      r1,|L3.64|
;;;766    {
;;;767        RTC->AER = RTC_WRITE_KEY;
000002  4a0e              LDR      r2,|L3.60|
000004  604a              STR      r2,[r1,#4]
                  |L3.6|
;;;768        while(!(RTC->AER & RTC_AER_ENF_Msk));
000006  684a              LDR      r2,[r1,#4]
000008  03d2              LSLS     r2,r2,#15
00000a  d5fc              BPL      |L3.6|
;;;769    
;;;770        if(u32IntFlagMask & RTC_RIER_TIER_Msk) {
00000c  0782              LSLS     r2,r0,#30
00000e  d504              BPL      |L3.26|
;;;771            RTC->RIER &= ~RTC_RIER_TIER_Msk;
000010  6a8b              LDR      r3,[r1,#0x28]
000012  2202              MOVS     r2,#2
000014  4393              BICS     r3,r3,r2
000016  628b              STR      r3,[r1,#0x28]
;;;772            RTC->RIIR = RTC_RIIR_TIF_Msk;
000018  62ca              STR      r2,[r1,#0x2c]
                  |L3.26|
;;;773        }
;;;774    
;;;775        if(u32IntFlagMask & RTC_RIER_AIER_Msk) {
00001a  07c2              LSLS     r2,r0,#31
00001c  d005              BEQ      |L3.42|
;;;776            RTC->RIER &= ~RTC_RIER_AIER_Msk;
00001e  6a8a              LDR      r2,[r1,#0x28]
000020  0852              LSRS     r2,r2,#1
000022  0052              LSLS     r2,r2,#1
000024  628a              STR      r2,[r1,#0x28]
;;;777            RTC->RIIR = RTC_RIIR_AIF_Msk;
000026  2201              MOVS     r2,#1
000028  62ca              STR      r2,[r1,#0x2c]
                  |L3.42|
;;;778        }
;;;779    
;;;780        if(u32IntFlagMask & RTC_RIER_SNOOPIER_Msk) {
00002a  0740              LSLS     r0,r0,#29
00002c  d504              BPL      |L3.56|
;;;781            RTC->RIER &= ~RTC_RIER_SNOOPIER_Msk;
00002e  6a8a              LDR      r2,[r1,#0x28]
000030  2004              MOVS     r0,#4
000032  4382              BICS     r2,r2,r0
000034  628a              STR      r2,[r1,#0x28]
;;;782            RTC->RIIR = RTC_RIIR_SNOOPIF_Msk;
000036  62c8              STR      r0,[r1,#0x2c]
                  |L3.56|
;;;783        }
;;;784    
;;;785    }
000038  4770              BX       lr
;;;786    
                          ENDP

00003a  0000              DCW      0x0000
                  |L3.60|
                          DCD      0x0000a965
                  |L3.64|
                          DCD      0x40008000

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

                  RTC_DisableTamperDetection PROC
;;;686     */
;;;687    void RTC_DisableTamperDetection(void)
000000  4806              LDR      r0,|L4.28|
;;;688    {
;;;689        RTC->AER = RTC_WRITE_KEY;
000002  4905              LDR      r1,|L4.24|
000004  6041              STR      r1,[r0,#4]
                  |L4.6|
;;;690        while(!(RTC->AER & RTC_AER_ENF_Msk));
000006  6841              LDR      r1,[r0,#4]
000008  03c9              LSLS     r1,r1,#15
00000a  d5fc              BPL      |L4.6|
;;;691    
;;;692        RTC->SPRCTL &= ~RTC_SPRCTL_SNOOPEN_Msk;
00000c  6bc1              LDR      r1,[r0,#0x3c]
00000e  0849              LSRS     r1,r1,#1
000010  0049              LSLS     r1,r1,#1
000012  63c1              STR      r1,[r0,#0x3c]
;;;693    }
000014  4770              BX       lr
;;;694    
                          ENDP

000016  0000              DCW      0x0000
                  |L4.24|
                          DCD      0x0000a965
                  |L4.28|
                          DCD      0x40008000

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

                  RTC_EnableInt PROC
;;;745     */
;;;746    void RTC_EnableInt(uint32_t u32IntFlagMask)
000000  4905              LDR      r1,|L5.24|
;;;747    {
;;;748        RTC->AER = RTC_WRITE_KEY;
000002  4a04              LDR      r2,|L5.20|
000004  604a              STR      r2,[r1,#4]
                  |L5.6|
;;;749        while(!(RTC->AER & RTC_AER_ENF_Msk));
000006  684a              LDR      r2,[r1,#4]
000008  03d2              LSLS     r2,r2,#15
00000a  d5fc              BPL      |L5.6|
;;;750    
;;;751        RTC->RIER |= u32IntFlagMask;
00000c  6a8a              LDR      r2,[r1,#0x28]
00000e  4302              ORRS     r2,r2,r0
000010  628a              STR      r2,[r1,#0x28]
;;;752    }
000012  4770              BX       lr
;;;753    
                          ENDP

                  |L5.20|
                          DCD      0x0000a965
                  |L5.24|
                          DCD      0x40008000

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

                  RTC_EnableTamperDetection PROC
;;;663     */
;;;664    void RTC_EnableTamperDetection(uint32_t u32PinCondition)
000000  490a              LDR      r1,|L6.44|
;;;665    {
;;;666        RTC->AER = RTC_WRITE_KEY;
000002  4a09              LDR      r2,|L6.40|
000004  604a              STR      r2,[r1,#4]
                  |L6.6|
;;;667        while(!(RTC->AER & RTC_AER_ENF_Msk));
000006  684a              LDR      r2,[r1,#4]
000008  03d2              LSLS     r2,r2,#15
00000a  d5fc              BPL      |L6.6|
;;;668    
;;;669        /* detection edge select */
;;;670        if(u32PinCondition)
;;;671            RTC->SPRCTL |= RTC_SPRCTL_SNOOPEDGE_Msk;
00000c  2202              MOVS     r2,#2
00000e  2800              CMP      r0,#0                 ;670
;;;672        else
;;;673            RTC->SPRCTL &= ~RTC_SPRCTL_SNOOPEDGE_Msk;
000010  6bc8              LDR      r0,[r1,#0x3c]
000012  d001              BEQ      |L6.24|
000014  4310              ORRS     r0,r0,r2              ;671
000016  e000              B        |L6.26|
                  |L6.24|
000018  4390              BICS     r0,r0,r2
                  |L6.26|
00001a  63c8              STR      r0,[r1,#0x3c]
;;;674    
;;;675        /* enable snooper pin event detection */
;;;676        RTC->SPRCTL |= RTC_SPRCTL_SNOOPEN_Msk;
00001c  6bc8              LDR      r0,[r1,#0x3c]
00001e  2201              MOVS     r2,#1
000020  4310              ORRS     r0,r0,r2
000022  63c8              STR      r0,[r1,#0x3c]
;;;677    }
000024  4770              BX       lr
;;;678    
                          ENDP

000026  0000              DCW      0x0000
                  |L6.40|
                          DCD      0x0000a965
                  |L6.44|
                          DCD      0x40008000

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

                  RTC_GetAlarmDateAndTime PROC
;;;278     */
;;;279    void RTC_GetAlarmDateAndTime(S_RTC_TIME_DATA_T *sPt)
000000  b510              PUSH     {r4,lr}
;;;280    {
;;;281        uint32_t u32Tmp;
;;;282    
;;;283        sPt->u32TimeScale = RTC->TSSR & RTC_TSSR_24H_12H_Msk;  /* 12/24-hour */
000002  4a3e              LDR      r2,|L7.252|
000004  6951              LDR      r1,[r2,#0x14]
000006  07c9              LSLS     r1,r1,#31
000008  0fc9              LSRS     r1,r1,#31
;;;284        sPt->u32DayOfWeek = RTC->DWR & RTC_DWR_DWR_Msk;        /* Day of week */
00000a  61c1              STR      r1,[r0,#0x1c]
00000c  6991              LDR      r1,[r2,#0x18]
;;;285    
;;;286        RTC->AER = RTC_WRITE_KEY;
00000e  4b3c              LDR      r3,|L7.256|
000010  0749              LSLS     r1,r1,#29             ;284
000012  0f49              LSRS     r1,r1,#29             ;284
000014  60c1              STR      r1,[r0,#0xc]
000016  6053              STR      r3,[r2,#4]
                  |L7.24|
;;;287        while(!(RTC->AER & RTC_AER_ENF_Msk));
000018  6851              LDR      r1,[r2,#4]
00001a  03c9              LSLS     r1,r1,#15
00001c  d5fc              BPL      |L7.24|
;;;288    
;;;289        g_u32hiYear  = (RTC->CAR & RTC_CAR_10YEAR_Msk) >> RTC_CAR_10YEAR_Pos;
00001e  6a11              LDR      r1,[r2,#0x20]
000020  0209              LSLS     r1,r1,#8
000022  0f0c              LSRS     r4,r1,#28
000024  4937              LDR      r1,|L7.260|
000026  604c              STR      r4,[r1,#4]  ; g_u32hiYear
;;;290        g_u32loYear  = (RTC->CAR & RTC_CAR_1YEAR_Msk)  >> RTC_CAR_1YEAR_Pos;
000028  6a14              LDR      r4,[r2,#0x20]
00002a  0324              LSLS     r4,r4,#12
00002c  0f24              LSRS     r4,r4,#28
00002e  608c              STR      r4,[r1,#8]  ; g_u32loYear
;;;291        g_u32hiMonth = (RTC->CAR & RTC_CAR_10MON_Msk)  >> RTC_CAR_10MON_Pos;
000030  6a14              LDR      r4,[r2,#0x20]
000032  04e4              LSLS     r4,r4,#19
000034  0fe4              LSRS     r4,r4,#31
000036  60cc              STR      r4,[r1,#0xc]  ; g_u32hiMonth
;;;292        g_u32loMonth = (RTC->CAR & RTC_CAR_1MON_Msk)   >> RTC_CAR_1MON_Pos;
000038  6a14              LDR      r4,[r2,#0x20]
00003a  0524              LSLS     r4,r4,#20
00003c  0f24              LSRS     r4,r4,#28
00003e  610c              STR      r4,[r1,#0x10]  ; g_u32loMonth
;;;293        g_u32hiDay   = (RTC->CAR & RTC_CAR_10DAY_Msk)  >> RTC_CAR_10DAY_Pos;
000040  6a14              LDR      r4,[r2,#0x20]
000042  06a4              LSLS     r4,r4,#26
000044  0fa4              LSRS     r4,r4,#30
000046  614c              STR      r4,[r1,#0x14]  ; g_u32hiDay
;;;294        g_u32loDay   = (RTC->CAR & RTC_CAR_1DAY_Msk);
000048  6a14              LDR      r4,[r2,#0x20]
00004a  0724              LSLS     r4,r4,#28
00004c  0f24              LSRS     r4,r4,#28
00004e  618c              STR      r4,[r1,#0x18]  ; g_u32loDay
;;;295    
;;;296        RTC->AER = RTC_WRITE_KEY;
000050  6053              STR      r3,[r2,#4]
                  |L7.82|
;;;297        while(!(RTC->AER & RTC_AER_ENF_Msk));
000052  6853              LDR      r3,[r2,#4]
000054  03db              LSLS     r3,r3,#15
000056  d5fc              BPL      |L7.82|
;;;298    
;;;299        g_u32hiHour =  (RTC->TAR & RTC_TAR_10HR_Msk)  >> RTC_TAR_10HR_Pos;
000058  69d3              LDR      r3,[r2,#0x1c]
00005a  029b              LSLS     r3,r3,#10
00005c  0f9b              LSRS     r3,r3,#30
00005e  61cb              STR      r3,[r1,#0x1c]  ; g_u32hiHour
;;;300        g_u32loHour =  (RTC->TAR & RTC_TAR_1HR_Msk)   >> RTC_TAR_1HR_Pos;
000060  69d3              LDR      r3,[r2,#0x1c]
000062  031b              LSLS     r3,r3,#12
000064  0f1b              LSRS     r3,r3,#28
000066  620b              STR      r3,[r1,#0x20]  ; g_u32loHour
;;;301        g_u32hiMin    =  (RTC->TAR & RTC_TAR_10MIN_Msk) >> RTC_TAR_10MIN_Pos;
000068  69d3              LDR      r3,[r2,#0x1c]
00006a  045b              LSLS     r3,r3,#17
00006c  0f5b              LSRS     r3,r3,#29
00006e  624b              STR      r3,[r1,#0x24]  ; g_u32hiMin
;;;302        g_u32loMin    =  (RTC->TAR & RTC_TAR_1MIN_Msk)  >> RTC_TAR_1MIN_Pos;
000070  69d3              LDR      r3,[r2,#0x1c]
000072  051b              LSLS     r3,r3,#20
000074  0f1b              LSRS     r3,r3,#28
000076  628b              STR      r3,[r1,#0x28]  ; g_u32loMin
;;;303        g_u32hiSec    =  (RTC->TAR & RTC_TAR_10SEC_Msk) >> RTC_TAR_10SEC_Pos;
000078  69d3              LDR      r3,[r2,#0x1c]
00007a  065b              LSLS     r3,r3,#25
00007c  0f5b              LSRS     r3,r3,#29
00007e  62cb              STR      r3,[r1,#0x2c]  ; g_u32hiSec
;;;304        g_u32loSec    =  (RTC->TAR & RTC_TAR_1SEC_Msk);
000080  69d2              LDR      r2,[r2,#0x1c]
000082  0712              LSLS     r2,r2,#28
000084  0f12              LSRS     r2,r2,#28
000086  630a              STR      r2,[r1,#0x30]  ; g_u32loSec
;;;305    
;;;306        u32Tmp  = (g_u32hiYear * 10);                                    /* Compute to 20XX year */
000088  684a              LDR      r2,[r1,#4]  ; g_u32hiYear
00008a  230a              MOVS     r3,#0xa
00008c  435a              MULS     r2,r3,r2
;;;307        u32Tmp += g_u32loYear;
00008e  688b              LDR      r3,[r1,#8]  ; g_u32loYear
000090  18d2              ADDS     r2,r2,r3
;;;308        sPt->u32Year = u32Tmp + RTC_YEAR2000;
000092  237d              MOVS     r3,#0x7d
000094  011b              LSLS     r3,r3,#4
000096  18d2              ADDS     r2,r2,r3
;;;309    
;;;310        u32Tmp = (g_u32hiMonth * 10);                                    /* Compute 0~12 month */
000098  6002              STR      r2,[r0,#0]
00009a  68ca              LDR      r2,[r1,#0xc]  ; g_u32hiMonth
00009c  230a              MOVS     r3,#0xa
00009e  435a              MULS     r2,r3,r2
;;;311        sPt->u32Month = u32Tmp + g_u32loMonth;
0000a0  690b              LDR      r3,[r1,#0x10]  ; g_u32loMonth
0000a2  18d2              ADDS     r2,r2,r3
;;;312    
;;;313        u32Tmp = (g_u32hiDay * 10);                                        /* Compute 0~31 day */
0000a4  6042              STR      r2,[r0,#4]
0000a6  694a              LDR      r2,[r1,#0x14]  ; g_u32hiDay
0000a8  230a              MOVS     r3,#0xa
0000aa  435a              MULS     r2,r3,r2
;;;314        sPt->u32Day = u32Tmp + g_u32loDay;
0000ac  698b              LDR      r3,[r1,#0x18]  ; g_u32loDay
0000ae  18d2              ADDS     r2,r2,r3
;;;315    
;;;316        if (sPt->u32TimeScale == RTC_CLOCK_12) {                /* Compute12/24 hour */
0000b0  6082              STR      r2,[r0,#8]
0000b2  69c2              LDR      r2,[r0,#0x1c]
0000b4  2a00              CMP      r2,#0
;;;317            u32Tmp  = (g_u32hiHour * 10);
;;;318            u32Tmp += g_u32loHour;
;;;319            sPt->u32Hour = u32Tmp;                                        /* AM: 1~12. PM: 21~32. */
;;;320    
;;;321            if (sPt->u32Hour >= 21) {
;;;322                sPt->u32AmPm  = RTC_PM;
;;;323                sPt->u32Hour -= 20;
;;;324            } else {
;;;325                sPt->u32AmPm = RTC_AM;
;;;326            }
;;;327    
;;;328            u32Tmp  = (g_u32hiMin * 10);
;;;329            u32Tmp += g_u32loMin;
;;;330            sPt->u32Minute = u32Tmp;
;;;331    
;;;332            u32Tmp  = (g_u32hiSec * 10);
;;;333            u32Tmp += g_u32loSec;
;;;334            sPt->u32Second = u32Tmp;
;;;335    
;;;336        } else {
;;;337            u32Tmp  = (g_u32hiHour * 10);
0000b6  69ca              LDR      r2,[r1,#0x1c]  ; g_u32hiHour
0000b8  d004              BEQ      |L7.196|
0000ba  230a              MOVS     r3,#0xa
0000bc  435a              MULS     r2,r3,r2
;;;338            u32Tmp +=  g_u32loHour;
0000be  6a0b              LDR      r3,[r1,#0x20]  ; g_u32loHour
0000c0  18d2              ADDS     r2,r2,r3
;;;339            sPt->u32Hour = u32Tmp;
;;;340    
;;;341            u32Tmp = (g_u32hiMin * 10);
;;;342            u32Tmp+= g_u32loMin;
;;;343            sPt->u32Minute = u32Tmp;
;;;344    
;;;345            u32Tmp  = (g_u32hiSec * 10);
;;;346            u32Tmp += g_u32loSec;
;;;347            sPt->u32Second = u32Tmp;
0000c2  e009              B        |L7.216|
                  |L7.196|
0000c4  230a              MOVS     r3,#0xa               ;317
0000c6  435a              MULS     r2,r3,r2              ;317
0000c8  6a0b              LDR      r3,[r1,#0x20]         ;318  ; g_u32loHour
0000ca  18d2              ADDS     r2,r2,r3              ;318
0000cc  6102              STR      r2,[r0,#0x10]         ;321
0000ce  2a15              CMP      r2,#0x15              ;321
0000d0  d304              BCC      |L7.220|
0000d2  2302              MOVS     r3,#2                 ;322
0000d4  3a14              SUBS     r2,r2,#0x14           ;323
0000d6  6203              STR      r3,[r0,#0x20]         ;323
                  |L7.216|
0000d8  6102              STR      r2,[r0,#0x10]         ;339
0000da  e001              B        |L7.224|
                  |L7.220|
0000dc  2201              MOVS     r2,#1                 ;325
0000de  6202              STR      r2,[r0,#0x20]         ;325
                  |L7.224|
0000e0  6a4a              LDR      r2,[r1,#0x24]         ;328  ; g_u32hiMin
0000e2  230a              MOVS     r3,#0xa               ;328
0000e4  435a              MULS     r2,r3,r2              ;328
0000e6  6a8b              LDR      r3,[r1,#0x28]         ;329  ; g_u32loMin
0000e8  18d2              ADDS     r2,r2,r3              ;329
0000ea  6142              STR      r2,[r0,#0x14]         ;332
0000ec  6aca              LDR      r2,[r1,#0x2c]         ;332  ; g_u32hiSec
0000ee  230a              MOVS     r3,#0xa               ;332
0000f0  6b09              LDR      r1,[r1,#0x30]         ;333  ; g_u32loSec
0000f2  435a              MULS     r2,r3,r2              ;332
0000f4  1851              ADDS     r1,r2,r1              ;333
0000f6  6181              STR      r1,[r0,#0x18]         ;334
;;;348        }
;;;349    
;;;350    }
0000f8  bd10              POP      {r4,pc}
;;;351    
                          ENDP

0000fa  0000              DCW      0x0000
                  |L7.252|
                          DCD      0x40008000
                  |L7.256|
                          DCD      0x0000a965
                  |L7.260|
                          DCD      ||.data||

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

                  RTC_GetDateAndTime PROC
;;;191     */
;;;192    void RTC_GetDateAndTime(S_RTC_TIME_DATA_T *sPt)
000000  b510              PUSH     {r4,lr}
;;;193    {
;;;194        uint32_t u32Tmp;
;;;195    
;;;196        sPt->u32TimeScale = RTC->TSSR & RTC_TSSR_24H_12H_Msk;    /* 12/24-hour */
000002  4a39              LDR      r2,|L8.232|
000004  6951              LDR      r1,[r2,#0x14]
000006  07cb              LSLS     r3,r1,#31
000008  0fdb              LSRS     r3,r3,#31
;;;197        sPt->u32DayOfWeek = RTC->DWR & RTC_DWR_DWR_Msk;          /* Day of week */
00000a  61c3              STR      r3,[r0,#0x1c]
00000c  6991              LDR      r1,[r2,#0x18]
00000e  0749              LSLS     r1,r1,#29
000010  0f49              LSRS     r1,r1,#29
;;;198    
;;;199        g_u32hiYear  = (RTC->CLR & RTC_CLR_10YEAR_Msk) >> RTC_CLR_10YEAR_Pos;
000012  60c1              STR      r1,[r0,#0xc]
000014  6911              LDR      r1,[r2,#0x10]
000016  0209              LSLS     r1,r1,#8
000018  0f0c              LSRS     r4,r1,#28
00001a  4934              LDR      r1,|L8.236|
00001c  604c              STR      r4,[r1,#4]  ; g_u32hiYear
;;;200        g_u32loYear  = (RTC->CLR & RTC_CLR_1YEAR_Msk) >> RTC_CLR_1YEAR_Pos;
00001e  6914              LDR      r4,[r2,#0x10]
000020  0324              LSLS     r4,r4,#12
000022  0f24              LSRS     r4,r4,#28
000024  608c              STR      r4,[r1,#8]  ; g_u32loYear
;;;201        g_u32hiMonth = (RTC->CLR & RTC_CLR_10MON_Msk) >> RTC_CLR_10MON_Pos;
000026  6914              LDR      r4,[r2,#0x10]
000028  04e4              LSLS     r4,r4,#19
00002a  0fe4              LSRS     r4,r4,#31
00002c  60cc              STR      r4,[r1,#0xc]  ; g_u32hiMonth
;;;202        g_u32loMonth = (RTC->CLR & RTC_CLR_1MON_Msk) >> RTC_CLR_1MON_Pos;
00002e  6914              LDR      r4,[r2,#0x10]
000030  0524              LSLS     r4,r4,#20
000032  0f24              LSRS     r4,r4,#28
000034  610c              STR      r4,[r1,#0x10]  ; g_u32loMonth
;;;203        g_u32hiDay   = (RTC->CLR & RTC_CLR_10DAY_Msk) >> RTC_CLR_10DAY_Pos;
000036  6914              LDR      r4,[r2,#0x10]
000038  06a4              LSLS     r4,r4,#26
00003a  0fa4              LSRS     r4,r4,#30
00003c  614c              STR      r4,[r1,#0x14]  ; g_u32hiDay
;;;204        g_u32loDay   = (RTC->CLR & RTC_CLR_1DAY_Msk);
00003e  6914              LDR      r4,[r2,#0x10]
000040  0724              LSLS     r4,r4,#28
000042  0f24              LSRS     r4,r4,#28
000044  618c              STR      r4,[r1,#0x18]  ; g_u32loDay
;;;205    
;;;206        g_u32hiHour =  (RTC->TLR & RTC_TLR_10HR_Msk) >> RTC_TLR_10HR_Pos;
000046  68d4              LDR      r4,[r2,#0xc]
000048  02a4              LSLS     r4,r4,#10
00004a  0fa4              LSRS     r4,r4,#30
00004c  61cc              STR      r4,[r1,#0x1c]  ; g_u32hiHour
;;;207        g_u32loHour =  (RTC->TLR & RTC_TLR_1HR_Msk) >> RTC_TLR_1HR_Pos;
00004e  68d4              LDR      r4,[r2,#0xc]
000050  0324              LSLS     r4,r4,#12
000052  0f24              LSRS     r4,r4,#28
000054  620c              STR      r4,[r1,#0x20]  ; g_u32loHour
;;;208        g_u32hiMin  =  (RTC->TLR & RTC_TLR_10MIN_Msk) >> RTC_TLR_10MIN_Pos;
000056  68d4              LDR      r4,[r2,#0xc]
000058  0464              LSLS     r4,r4,#17
00005a  0f64              LSRS     r4,r4,#29
00005c  624c              STR      r4,[r1,#0x24]  ; g_u32hiMin
;;;209        g_u32loMin  =  (RTC->TLR & RTC_TLR_1MIN_Msk) >> RTC_TLR_1MIN_Pos;
00005e  68d4              LDR      r4,[r2,#0xc]
000060  0524              LSLS     r4,r4,#20
000062  0f24              LSRS     r4,r4,#28
000064  628c              STR      r4,[r1,#0x28]  ; g_u32loMin
;;;210        g_u32hiSec  =  (RTC->TLR & RTC_TLR_10SEC_Msk) >> RTC_TLR_10SEC_Pos;
000066  68d4              LDR      r4,[r2,#0xc]
000068  0664              LSLS     r4,r4,#25
00006a  0f64              LSRS     r4,r4,#29
00006c  62cc              STR      r4,[r1,#0x2c]  ; g_u32hiSec
;;;211        g_u32loSec  =  (RTC->TLR & RTC_TLR_1SEC_Msk);
00006e  68d2              LDR      r2,[r2,#0xc]
000070  0712              LSLS     r2,r2,#28
000072  0f12              LSRS     r2,r2,#28
000074  630a              STR      r2,[r1,#0x30]  ; g_u32loSec
;;;212    
;;;213        u32Tmp  = (g_u32hiYear * 10);              /* Compute to 20XX year */
000076  684a              LDR      r2,[r1,#4]  ; g_u32hiYear
000078  240a              MOVS     r4,#0xa
00007a  4362              MULS     r2,r4,r2
;;;214        u32Tmp += g_u32loYear;
00007c  688c              LDR      r4,[r1,#8]  ; g_u32loYear
00007e  1912              ADDS     r2,r2,r4
;;;215        sPt->u32Year = u32Tmp + RTC_YEAR2000;
000080  247d              MOVS     r4,#0x7d
000082  0124              LSLS     r4,r4,#4
000084  1912              ADDS     r2,r2,r4
;;;216    
;;;217        u32Tmp = (g_u32hiMonth * 10);              /* Compute 0~12 month */
000086  6002              STR      r2,[r0,#0]
000088  68ca              LDR      r2,[r1,#0xc]  ; g_u32hiMonth
00008a  240a              MOVS     r4,#0xa
00008c  4362              MULS     r2,r4,r2
;;;218        sPt->u32Month = u32Tmp + g_u32loMonth;
00008e  690c              LDR      r4,[r1,#0x10]  ; g_u32loMonth
000090  1912              ADDS     r2,r2,r4
;;;219    
;;;220        u32Tmp = (g_u32hiDay * 10);                /* Compute 0~31 day */
000092  6042              STR      r2,[r0,#4]
000094  694a              LDR      r2,[r1,#0x14]  ; g_u32hiDay
000096  240a              MOVS     r4,#0xa
000098  4362              MULS     r2,r4,r2
;;;221        sPt->u32Day   =  u32Tmp  + g_u32loDay;
00009a  698c              LDR      r4,[r1,#0x18]  ; g_u32loDay
00009c  1912              ADDS     r2,r2,r4
;;;222    
;;;223        if (sPt->u32TimeScale == RTC_CLOCK_12) { /* Compute12/24 hour */
00009e  6082              STR      r2,[r0,#8]
;;;224            u32Tmp = (g_u32hiHour * 10);
;;;225            u32Tmp+= g_u32loHour;
;;;226            sPt->u32Hour = u32Tmp;                 /* AM: 1~12. PM: 21~32. */
;;;227    
;;;228            if (sPt->u32Hour >= 21) {
;;;229                sPt->u32AmPm = RTC_PM;
;;;230                sPt->u32Hour -= 20;
;;;231            } else {
;;;232                sPt->u32AmPm = RTC_AM;
;;;233            }
;;;234    
;;;235            u32Tmp = (g_u32hiMin  * 10);
;;;236            u32Tmp+= g_u32loMin;
;;;237            sPt->u32Minute = u32Tmp;
;;;238    
;;;239            u32Tmp = (g_u32hiSec  * 10);
;;;240            u32Tmp+= g_u32loSec;
;;;241            sPt->u32Second = u32Tmp;
;;;242    
;;;243        } else {
;;;244            u32Tmp  = (g_u32hiHour * 10);
0000a0  69ca              LDR      r2,[r1,#0x1c]  ; g_u32hiHour
0000a2  2b00              CMP      r3,#0                 ;223
0000a4  d004              BEQ      |L8.176|
0000a6  230a              MOVS     r3,#0xa
0000a8  435a              MULS     r2,r3,r2
;;;245            u32Tmp += g_u32loHour;
0000aa  6a0b              LDR      r3,[r1,#0x20]  ; g_u32loHour
0000ac  18d2              ADDS     r2,r2,r3
;;;246            sPt->u32Hour = u32Tmp;
;;;247    
;;;248            u32Tmp  = (g_u32hiMin * 10);
;;;249            u32Tmp +=  g_u32loMin;
;;;250            sPt->u32Minute = u32Tmp;
;;;251    
;;;252            u32Tmp  = (g_u32hiSec * 10);
;;;253            u32Tmp += g_u32loSec;
;;;254            sPt->u32Second = u32Tmp;
0000ae  e009              B        |L8.196|
                  |L8.176|
0000b0  230a              MOVS     r3,#0xa               ;224
0000b2  435a              MULS     r2,r3,r2              ;224
0000b4  6a0b              LDR      r3,[r1,#0x20]         ;225  ; g_u32loHour
0000b6  18d2              ADDS     r2,r2,r3              ;225
0000b8  6102              STR      r2,[r0,#0x10]         ;228
0000ba  2a15              CMP      r2,#0x15              ;228
0000bc  d304              BCC      |L8.200|
0000be  2302              MOVS     r3,#2                 ;229
0000c0  3a14              SUBS     r2,r2,#0x14           ;230
0000c2  6203              STR      r3,[r0,#0x20]         ;230
                  |L8.196|
0000c4  6102              STR      r2,[r0,#0x10]         ;246
0000c6  e001              B        |L8.204|
                  |L8.200|
0000c8  2201              MOVS     r2,#1                 ;232
0000ca  6202              STR      r2,[r0,#0x20]         ;232
                  |L8.204|
0000cc  6a4a              LDR      r2,[r1,#0x24]         ;235  ; g_u32hiMin
0000ce  230a              MOVS     r3,#0xa               ;235
0000d0  435a              MULS     r2,r3,r2              ;235
0000d2  6a8b              LDR      r3,[r1,#0x28]         ;236  ; g_u32loMin
0000d4  18d2              ADDS     r2,r2,r3              ;236
0000d6  6142              STR      r2,[r0,#0x14]         ;239
0000d8  6aca              LDR      r2,[r1,#0x2c]         ;239  ; g_u32hiSec
0000da  230a              MOVS     r3,#0xa               ;239
0000dc  6b09              LDR      r1,[r1,#0x30]         ;240  ; g_u32loSec
0000de  435a              MULS     r2,r3,r2              ;239
0000e0  1851              ADDS     r1,r2,r1              ;240
0000e2  6181              STR      r1,[r0,#0x18]         ;241
;;;255        }
;;;256    
;;;257    }
0000e4  bd10              POP      {r4,pc}
;;;258    
                          ENDP

0000e6  0000              DCW      0x0000
                  |L8.232|
                          DCD      0x40008000
                  |L8.236|
                          DCD      ||.data||

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

                  RTC_GetDayOfWeek PROC
;;;702     */
;;;703    uint32_t RTC_GetDayOfWeek(void)
000000  4802              LDR      r0,|L9.12|
;;;704    {
;;;705        return (RTC->DWR & RTC_DWR_DWR_Msk);
000002  6980              LDR      r0,[r0,#0x18]
000004  0740              LSLS     r0,r0,#29
000006  0f40              LSRS     r0,r0,#29
;;;706    }
000008  4770              BX       lr
;;;707    
                          ENDP

00000a  0000              DCW      0x0000
                  |L9.12|
                          DCD      0x40008000

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

                  RTC_Open PROC
;;;98      */
;;;99     void RTC_Open (S_RTC_TIME_DATA_T *sPt)
000000  b5f8              PUSH     {r3-r7,lr}
;;;100    {
000002  4604              MOV      r4,r0
;;;101        uint32_t u32Reg;
;;;102    
;;;103        volatile int32_t i32delay=1000;
;;;104    
;;;105        RTC->INIR = RTC_INIT_KEY;
000004  4f3b              LDR      r7,|L10.244|
000006  257d              MOVS     r5,#0x7d              ;103
000008  4839              LDR      r0,|L10.240|
00000a  00ed              LSLS     r5,r5,#3              ;103
00000c  6038              STR      r0,[r7,#0]
;;;106    
;;;107        if(RTC->INIR != 0x1) {
00000e  6839              LDR      r1,[r7,#0]
000010  2901              CMP      r1,#1
000012  d003              BEQ      |L10.28|
;;;108            RTC->INIR = RTC_INIT_KEY;
000014  6038              STR      r0,[r7,#0]
                  |L10.22|
;;;109    
;;;110            while(RTC->INIR != 0x1);
000016  6838              LDR      r0,[r7,#0]
000018  2801              CMP      r0,#1
00001a  d1fc              BNE      |L10.22|
                  |L10.28|
;;;111        }
;;;112    
;;;113        if(sPt == NULL)
00001c  2c00              CMP      r4,#0
00001e  d066              BEQ      |L10.238|
;;;114            return;
;;;115    
;;;116        /*-----------------------------------------------------------------------------------------------------*/
;;;117        /* Second, set RTC 24/12 hour setting                                                                  */
;;;118        /*-----------------------------------------------------------------------------------------------------*/
;;;119        if (sPt->u32TimeScale == RTC_CLOCK_12) {
000020  69e0              LDR      r0,[r4,#0x1c]
;;;120            RTC->AER = RTC_WRITE_KEY;
000022  4e35              LDR      r6,|L10.248|
000024  2800              CMP      r0,#0                 ;119
;;;121            while(!(RTC->AER & RTC_AER_ENF_Msk));
;;;122            RTC->TSSR &= ~RTC_TSSR_24H_12H_Msk;
;;;123    
;;;124            /*-------------------------------------------------------------------------------------------------*/
;;;125            /* important, range of 12-hour PM mode is 21 up to 32                                              */
;;;126            /*-------------------------------------------------------------------------------------------------*/
;;;127            if (sPt->u32AmPm == RTC_PM)
;;;128                sPt->u32Hour += 20;
;;;129        } else {
;;;130            RTC->AER = RTC_WRITE_KEY;
000026  607e              STR      r6,[r7,#4]
000028  d10d              BNE      |L10.70|
                  |L10.42|
00002a  6878              LDR      r0,[r7,#4]            ;121
00002c  03c0              LSLS     r0,r0,#15             ;121
00002e  d5fc              BPL      |L10.42|
000030  6978              LDR      r0,[r7,#0x14]         ;122
000032  0840              LSRS     r0,r0,#1              ;122
000034  0040              LSLS     r0,r0,#1              ;122
000036  6178              STR      r0,[r7,#0x14]         ;122
000038  6a20              LDR      r0,[r4,#0x20]         ;127
00003a  2802              CMP      r0,#2                 ;127
00003c  d10a              BNE      |L10.84|
00003e  6920              LDR      r0,[r4,#0x10]         ;128
000040  3014              ADDS     r0,r0,#0x14           ;128
000042  6120              STR      r0,[r4,#0x10]         ;128
000044  e006              B        |L10.84|
                  |L10.70|
;;;131            while(!(RTC->AER & RTC_AER_ENF_Msk));
000046  6878              LDR      r0,[r7,#4]
000048  03c0              LSLS     r0,r0,#15
00004a  d5fc              BPL      |L10.70|
;;;132            RTC->TSSR |= RTC_TSSR_24H_12H_Msk;
00004c  6978              LDR      r0,[r7,#0x14]
00004e  2101              MOVS     r1,#1
000050  4308              ORRS     r0,r0,r1
000052  6178              STR      r0,[r7,#0x14]
                  |L10.84|
;;;133        }
;;;134    
;;;135        /*-----------------------------------------------------------------------------------------------------*/
;;;136        /* Set RTC Calender Loading                                                                            */
;;;137        /*-----------------------------------------------------------------------------------------------------*/
;;;138        u32Reg     = ((sPt->u32Year - RTC_YEAR2000) / 10) << 20;
000054  207d              MOVS     r0,#0x7d
000056  6821              LDR      r1,[r4,#0]
000058  0100              LSLS     r0,r0,#4
00005a  1a08              SUBS     r0,r1,r0
00005c  210a              MOVS     r1,#0xa
00005e  f7fffffe          BL       __aeabi_uidivmod
;;;139        u32Reg    |= (((sPt->u32Year - RTC_YEAR2000) % 10) << 16);
000062  040a              LSLS     r2,r1,#16
000064  0500              LSLS     r0,r0,#20             ;138
000066  4302              ORRS     r2,r2,r0
;;;140        u32Reg    |= ((sPt->u32Month  / 10) << 12);
000068  9200              STR      r2,[sp,#0]
00006a  210a              MOVS     r1,#0xa
00006c  6860              LDR      r0,[r4,#4]
00006e  f7fffffe          BL       __aeabi_uidivmod
000072  9a00              LDR      r2,[sp,#0]
000074  0300              LSLS     r0,r0,#12
000076  4310              ORRS     r0,r0,r2
;;;141        u32Reg    |= ((sPt->u32Month  % 10) << 8);
000078  020a              LSLS     r2,r1,#8
00007a  4302              ORRS     r2,r2,r0
;;;142        u32Reg    |= ((sPt->u32Day    / 10) << 4);
00007c  9200              STR      r2,[sp,#0]
00007e  210a              MOVS     r1,#0xa
000080  68a0              LDR      r0,[r4,#8]
000082  f7fffffe          BL       __aeabi_uidivmod
000086  9a00              LDR      r2,[sp,#0]
000088  0100              LSLS     r0,r0,#4
00008a  4310              ORRS     r0,r0,r2
;;;143        u32Reg    |= (sPt->u32Day     % 10);
00008c  4301              ORRS     r1,r1,r0
;;;144        g_u32Reg = u32Reg;
00008e  481b              LDR      r0,|L10.252|
000090  6001              STR      r1,[r0,#0]  ; g_u32Reg
;;;145    
;;;146        RTC->AER = RTC_WRITE_KEY;
000092  4919              LDR      r1,|L10.248|
000094  6079              STR      r1,[r7,#4]
                  |L10.150|
;;;147        while(!(RTC->AER & RTC_AER_ENF_Msk));
000096  6879              LDR      r1,[r7,#4]
000098  03c9              LSLS     r1,r1,#15
00009a  d5fc              BPL      |L10.150|
;;;148    
;;;149        RTC->CLR = (uint32_t)g_u32Reg;
00009c  4817              LDR      r0,|L10.252|
00009e  6800              LDR      r0,[r0,#0]  ; g_u32Reg
0000a0  6138              STR      r0,[r7,#0x10]
;;;150    
;;;151        /*-----------------------------------------------------------------------------------------------------*/
;;;152        /* Set RTC Time Loading                                                                                */
;;;153        /*-----------------------------------------------------------------------------------------------------*/
;;;154        u32Reg     = ((sPt->u32Hour / 10) << 20);
0000a2  210a              MOVS     r1,#0xa
0000a4  6920              LDR      r0,[r4,#0x10]
0000a6  f7fffffe          BL       __aeabi_uidivmod
;;;155        u32Reg    |= ((sPt->u32Hour % 10) << 16);
0000aa  040e              LSLS     r6,r1,#16
0000ac  0500              LSLS     r0,r0,#20             ;154
0000ae  4306              ORRS     r6,r6,r0
;;;156        u32Reg    |= ((sPt->u32Minute / 10) << 12);
0000b0  210a              MOVS     r1,#0xa
0000b2  6960              LDR      r0,[r4,#0x14]
0000b4  f7fffffe          BL       __aeabi_uidivmod
0000b8  0300              LSLS     r0,r0,#12
0000ba  4330              ORRS     r0,r0,r6
;;;157        u32Reg    |= ((sPt->u32Minute % 10) << 8);
0000bc  020e              LSLS     r6,r1,#8
0000be  4306              ORRS     r6,r6,r0
;;;158        u32Reg    |= ((sPt->u32Second / 10) << 4);
0000c0  210a              MOVS     r1,#0xa
0000c2  69a0              LDR      r0,[r4,#0x18]
0000c4  f7fffffe          BL       __aeabi_uidivmod
0000c8  0100              LSLS     r0,r0,#4
0000ca  4330              ORRS     r0,r0,r6
;;;159        u32Reg    |= (sPt->u32Second % 10);
0000cc  4301              ORRS     r1,r1,r0
;;;160        g_u32Reg = u32Reg;
0000ce  480b              LDR      r0,|L10.252|
0000d0  6001              STR      r1,[r0,#0]  ; g_u32Reg
;;;161    
;;;162        RTC->AER = RTC_WRITE_KEY;
0000d2  4809              LDR      r0,|L10.248|
0000d4  6078              STR      r0,[r7,#4]
                  |L10.214|
;;;163        while(!(RTC->AER & RTC_AER_ENF_Msk));
0000d6  6878              LDR      r0,[r7,#4]
0000d8  03c0              LSLS     r0,r0,#15
0000da  d5fc              BPL      |L10.214|
;;;164    
;;;165        RTC->TLR = (uint32_t)g_u32Reg;
0000dc  4807              LDR      r0,|L10.252|
0000de  6800              LDR      r0,[r0,#0]  ; g_u32Reg
0000e0  60f8              STR      r0,[r7,#0xc]
;;;166    
;;;167        RTC->DWR = sPt->u32DayOfWeek;
0000e2  68e0              LDR      r0,[r4,#0xc]
0000e4  61b8              STR      r0,[r7,#0x18]
                  |L10.230|
;;;168    
;;;169        /* Waiting for RTC settings stable */
;;;170        while(i32delay--);
0000e6  4628              MOV      r0,r5
0000e8  1e6d              SUBS     r5,r5,#1
0000ea  2800              CMP      r0,#0
0000ec  d1fb              BNE      |L10.230|
                  |L10.238|
;;;171    
;;;172    }
0000ee  bdf8              POP      {r3-r7,pc}
;;;173    
                          ENDP

                  |L10.240|
                          DCD      0xa5eb1357
                  |L10.244|
                          DCD      0x40008000
                  |L10.248|
                          DCD      0x0000a965
                  |L10.252|
                          DCD      ||.data||

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

                  RTC_SetAlarmDate PROC
;;;586     */
;;;587    void RTC_SetAlarmDate(uint32_t u32Year, uint32_t u32Month, uint32_t u32Day)
000000  b5f7              PUSH     {r0-r2,r4-r7,lr}
;;;588    {
;;;589        __IO uint32_t u32Reg;
;;;590    
;;;591        RTC->AER = RTC_WRITE_KEY;
000002  4c15              LDR      r4,|L11.88|
000004  4d13              LDR      r5,|L11.84|
000006  4603              MOV      r3,r0                 ;588
000008  460e              MOV      r6,r1                 ;588
00000a  6065              STR      r5,[r4,#4]
                  |L11.12|
;;;592        while(!(RTC->AER & RTC_AER_ENF_Msk));
00000c  6860              LDR      r0,[r4,#4]
00000e  03c0              LSLS     r0,r0,#15
000010  d5fc              BPL      |L11.12|
;;;593    
;;;594        u32Reg       = ((u32Year - RTC_YEAR2000) / 10) << 20;
000012  207d              MOVS     r0,#0x7d
000014  0100              LSLS     r0,r0,#4
000016  210a              MOVS     r1,#0xa
000018  1a18              SUBS     r0,r3,r0
00001a  f7fffffe          BL       __aeabi_uidivmod
;;;595        u32Reg      |= (((u32Year - RTC_YEAR2000) % 10) << 16);
00001e  040f              LSLS     r7,r1,#16
000020  0500              LSLS     r0,r0,#20             ;594
000022  4307              ORRS     r7,r7,r0
;;;596        u32Reg      |= ((u32Month  / 10) << 12);
000024  210a              MOVS     r1,#0xa
000026  4630              MOV      r0,r6
000028  f7fffffe          BL       __aeabi_uidivmod
00002c  0300              LSLS     r0,r0,#12
;;;597        u32Reg      |= ((u32Month  % 10) << 8);
00002e  020e              LSLS     r6,r1,#8
000030  4338              ORRS     r0,r0,r7              ;596
000032  4306              ORRS     r6,r6,r0
;;;598        u32Reg      |= ((u32Day    / 10) << 4);
000034  210a              MOVS     r1,#0xa
000036  9802              LDR      r0,[sp,#8]
000038  f7fffffe          BL       __aeabi_uidivmod
00003c  0100              LSLS     r0,r0,#4
00003e  4330              ORRS     r0,r0,r6
;;;599        u32Reg      |=  (u32Day    % 10);
;;;600        g_u32Reg   = u32Reg;
000040  4a06              LDR      r2,|L11.92|
000042  4301              ORRS     r1,r1,r0              ;599
000044  6011              STR      r1,[r2,#0]  ; g_u32Reg
;;;601    
;;;602        RTC->AER = RTC_WRITE_KEY;
000046  6065              STR      r5,[r4,#4]
                  |L11.72|
;;;603        while(!(RTC->AER & RTC_AER_ENF_Msk));
000048  6860              LDR      r0,[r4,#4]
00004a  03c0              LSLS     r0,r0,#15
00004c  d5fc              BPL      |L11.72|
;;;604    
;;;605        RTC->CAR = (uint32_t)g_u32Reg;
00004e  6810              LDR      r0,[r2,#0]  ; g_u32Reg
000050  6220              STR      r0,[r4,#0x20]
;;;606    
;;;607    }
000052  bdfe              POP      {r1-r7,pc}
;;;608    
                          ENDP

                  |L11.84|
                          DCD      0x0000a965
                  |L11.88|
                          DCD      0x40008000
                  |L11.92|
                          DCD      ||.data||

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

                  RTC_SetAlarmDateAndTime PROC
;;;444     */
;;;445    void RTC_SetAlarmDateAndTime(S_RTC_TIME_DATA_T *sPt)
000000  b5f8              PUSH     {r3-r7,lr}
;;;446    {
;;;447        uint32_t u32Reg;
;;;448    
;;;449        RTC->AER = RTC_WRITE_KEY;
000002  4e30              LDR      r6,|L12.196|
000004  4f2e              LDR      r7,|L12.192|
000006  4604              MOV      r4,r0                 ;446
000008  6077              STR      r7,[r6,#4]
                  |L12.10|
;;;450        while(!(RTC->AER & RTC_AER_ENF_Msk));
00000a  6870              LDR      r0,[r6,#4]
00000c  03c0              LSLS     r0,r0,#15
00000e  d5fc              BPL      |L12.10|
;;;451    
;;;452        if (sPt->u32TimeScale == RTC_CLOCK_12) {
000010  69e0              LDR      r0,[r4,#0x1c]
000012  2800              CMP      r0,#0
;;;453            RTC->TSSR &= ~RTC_TSSR_24H_12H_Msk;
;;;454    
;;;455            /*-----------------------------------------------------------------------------------------*/
;;;456            /* important, range of 12-hour PM mode is 21 up to 32                                      */
;;;457            /*-----------------------------------------------------------------------------------------*/
;;;458            if (sPt->u32AmPm == RTC_PM)
;;;459                sPt->u32Hour += 20;
;;;460        } else {
;;;461            RTC->TSSR |= RTC_TSSR_24H_12H_Msk;
000014  6970              LDR      r0,[r6,#0x14]
000016  d048              BEQ      |L12.170|
000018  2101              MOVS     r1,#1
00001a  4308              ORRS     r0,r0,r1
00001c  6170              STR      r0,[r6,#0x14]
                  |L12.30|
;;;462        }
;;;463    
;;;464        RTC->DWR = sPt->u32DayOfWeek & RTC_DWR_DWR_Msk;
00001e  68e0              LDR      r0,[r4,#0xc]
000020  0740              LSLS     r0,r0,#29
000022  0f40              LSRS     r0,r0,#29
000024  61b0              STR      r0,[r6,#0x18]
;;;465    
;;;466    
;;;467        u32Reg     = ((sPt->u32Year - RTC_YEAR2000) / 10) << 20;
000026  207d              MOVS     r0,#0x7d
000028  6821              LDR      r1,[r4,#0]
00002a  0100              LSLS     r0,r0,#4
00002c  1a08              SUBS     r0,r1,r0
00002e  210a              MOVS     r1,#0xa
000030  f7fffffe          BL       __aeabi_uidivmod
;;;468        u32Reg    |= (((sPt->u32Year - RTC_YEAR2000) % 10) << 16);
000034  040d              LSLS     r5,r1,#16
000036  0500              LSLS     r0,r0,#20             ;467
000038  4305              ORRS     r5,r5,r0
;;;469        u32Reg    |= ((sPt->u32Month  / 10) << 12);
00003a  210a              MOVS     r1,#0xa
00003c  6860              LDR      r0,[r4,#4]
00003e  f7fffffe          BL       __aeabi_uidivmod
000042  0300              LSLS     r0,r0,#12
000044  4328              ORRS     r0,r0,r5
;;;470        u32Reg    |= ((sPt->u32Month  % 10) << 8);
000046  020d              LSLS     r5,r1,#8
000048  4305              ORRS     r5,r5,r0
;;;471        u32Reg    |= ((sPt->u32Day     / 10) << 4);
00004a  210a              MOVS     r1,#0xa
00004c  68a0              LDR      r0,[r4,#8]
00004e  f7fffffe          BL       __aeabi_uidivmod
000052  0100              LSLS     r0,r0,#4
000054  4328              ORRS     r0,r0,r5
;;;472        u32Reg    |=  (sPt->u32Day    % 10);
000056  4301              ORRS     r1,r1,r0
;;;473        g_u32Reg   = u32Reg;
000058  481b              LDR      r0,|L12.200|
00005a  6001              STR      r1,[r0,#0]  ; g_u32Reg
;;;474    
;;;475        RTC->AER = RTC_WRITE_KEY;
00005c  4918              LDR      r1,|L12.192|
00005e  6071              STR      r1,[r6,#4]
                  |L12.96|
;;;476        while(!(RTC->AER & RTC_AER_ENF_Msk));
000060  6871              LDR      r1,[r6,#4]
000062  03c9              LSLS     r1,r1,#15
000064  d5fc              BPL      |L12.96|
;;;477    
;;;478        RTC->CAR = (uint32_t)g_u32Reg;
000066  4607              MOV      r7,r0
000068  6800              LDR      r0,[r0,#0]  ; g_u32Reg
00006a  6230              STR      r0,[r6,#0x20]
;;;479    
;;;480        u32Reg     = ((sPt->u32Hour   / 10) << 20);
00006c  210a              MOVS     r1,#0xa
00006e  6920              LDR      r0,[r4,#0x10]
000070  f7fffffe          BL       __aeabi_uidivmod
;;;481        u32Reg    |= ((sPt->u32Hour   % 10) << 16);
000074  040d              LSLS     r5,r1,#16
000076  0500              LSLS     r0,r0,#20             ;480
000078  4305              ORRS     r5,r5,r0
;;;482        u32Reg    |= ((sPt->u32Minute / 10) << 12);
00007a  210a              MOVS     r1,#0xa
00007c  6960              LDR      r0,[r4,#0x14]
00007e  f7fffffe          BL       __aeabi_uidivmod
000082  0300              LSLS     r0,r0,#12
000084  4328              ORRS     r0,r0,r5
;;;483        u32Reg    |= ((sPt->u32Minute % 10) << 8);
000086  020d              LSLS     r5,r1,#8
000088  4305              ORRS     r5,r5,r0
;;;484        u32Reg    |= ((sPt->u32Second / 10) << 4);
00008a  210a              MOVS     r1,#0xa
00008c  69a0              LDR      r0,[r4,#0x18]
00008e  f7fffffe          BL       __aeabi_uidivmod
000092  0100              LSLS     r0,r0,#4
000094  4328              ORRS     r0,r0,r5
;;;485        u32Reg    |=  (sPt->u32Second % 10);
000096  4301              ORRS     r1,r1,r0
;;;486        g_u32Reg = u32Reg;
000098  6039              STR      r1,[r7,#0]  ; g_u32Reg
;;;487    
;;;488        RTC->AER = RTC_WRITE_KEY;
00009a  4809              LDR      r0,|L12.192|
00009c  6070              STR      r0,[r6,#4]
                  |L12.158|
;;;489        while(!(RTC->AER & RTC_AER_ENF_Msk));
00009e  6870              LDR      r0,[r6,#4]
0000a0  03c0              LSLS     r0,r0,#15
0000a2  d5fc              BPL      |L12.158|
;;;490    
;;;491        RTC->TAR = (uint32_t)g_u32Reg;
0000a4  6838              LDR      r0,[r7,#0]  ; g_u32Reg
0000a6  61f0              STR      r0,[r6,#0x1c]
;;;492    
;;;493    }
0000a8  bdf8              POP      {r3-r7,pc}
                  |L12.170|
0000aa  0840              LSRS     r0,r0,#1              ;453
0000ac  0040              LSLS     r0,r0,#1              ;453
0000ae  6170              STR      r0,[r6,#0x14]         ;453
0000b0  6a20              LDR      r0,[r4,#0x20]         ;458
0000b2  2802              CMP      r0,#2                 ;458
0000b4  d1b3              BNE      |L12.30|
0000b6  6920              LDR      r0,[r4,#0x10]         ;459
0000b8  3014              ADDS     r0,r0,#0x14           ;459
0000ba  6120              STR      r0,[r4,#0x10]         ;459
0000bc  e7af              B        |L12.30|
;;;494    
                          ENDP

0000be  0000              DCW      0x0000
                  |L12.192|
                          DCD      0x0000a965
                  |L12.196|
                          DCD      0x40008000
                  |L12.200|
                          DCD      ||.data||

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

                  RTC_SetAlarmTime PROC
;;;620     */
;;;621    void RTC_SetAlarmTime(uint32_t u32Hour, uint32_t u32Minute, uint32_t u32Second, uint32_t u32TimeMode, uint32_t u32AmPm)
000000  b5ff              PUSH     {r0-r7,lr}
;;;622    {
000002  b081              SUB      sp,sp,#4
;;;623        __IO uint32_t u32Reg;
;;;624    
;;;625        RTC->AER = RTC_WRITE_KEY;
000004  4c1c              LDR      r4,|L13.120|
000006  4d1b              LDR      r5,|L13.116|
000008  9a0a              LDR      r2,[sp,#0x28]
00000a  460e              MOV      r6,r1                 ;622
00000c  6065              STR      r5,[r4,#4]
                  |L13.14|
;;;626        while(!(RTC->AER & RTC_AER_ENF_Msk));
00000e  6861              LDR      r1,[r4,#4]
000010  03c9              LSLS     r1,r1,#15
000012  d5fc              BPL      |L13.14|
;;;627    
;;;628        if (u32TimeMode == RTC_CLOCK_12) {
000014  2b00              CMP      r3,#0
000016  d002              BEQ      |L13.30|
;;;629            RTC->TSSR &= ~RTC_TSSR_24H_12H_Msk;
;;;630    
;;;631            if (u32AmPm == RTC_PM)    /* important, range of 12-hour PM mode is 21 up to 32 */
;;;632                u32Hour += 20;
;;;633        } else if(u32TimeMode == RTC_CLOCK_24) {
000018  2b01              CMP      r3,#1
00001a  d008              BEQ      |L13.46|
00001c  e00b              B        |L13.54|
                  |L13.30|
00001e  6961              LDR      r1,[r4,#0x14]         ;629
000020  0849              LSRS     r1,r1,#1              ;629
000022  0049              LSLS     r1,r1,#1              ;629
000024  6161              STR      r1,[r4,#0x14]         ;629
000026  2a02              CMP      r2,#2                 ;631
000028  d105              BNE      |L13.54|
00002a  3014              ADDS     r0,r0,#0x14           ;632
00002c  e003              B        |L13.54|
                  |L13.46|
;;;634            RTC->TSSR |= RTC_TSSR_24H_12H_Msk;
00002e  6961              LDR      r1,[r4,#0x14]
000030  2201              MOVS     r2,#1
000032  4311              ORRS     r1,r1,r2
000034  6161              STR      r1,[r4,#0x14]
                  |L13.54|
;;;635        }
;;;636    
;;;637        u32Reg     = ((u32Hour   / 10) << 20);
000036  210a              MOVS     r1,#0xa
000038  f7fffffe          BL       __aeabi_uidivmod
;;;638        u32Reg    |= ((u32Hour   % 10) << 16);
00003c  040f              LSLS     r7,r1,#16
00003e  0500              LSLS     r0,r0,#20             ;637
000040  4307              ORRS     r7,r7,r0
;;;639        u32Reg    |= ((u32Minute / 10) << 12);
000042  210a              MOVS     r1,#0xa
000044  4630              MOV      r0,r6
000046  f7fffffe          BL       __aeabi_uidivmod
00004a  0300              LSLS     r0,r0,#12
;;;640        u32Reg    |= ((u32Minute % 10) <<  8);
00004c  020e              LSLS     r6,r1,#8
00004e  4338              ORRS     r0,r0,r7              ;639
000050  4306              ORRS     r6,r6,r0
;;;641        u32Reg    |= ((u32Second / 10) <<  4);
000052  210a              MOVS     r1,#0xa
000054  9803              LDR      r0,[sp,#0xc]
000056  f7fffffe          BL       __aeabi_uidivmod
00005a  0100              LSLS     r0,r0,#4
00005c  4330              ORRS     r0,r0,r6
;;;642        u32Reg    |=  (u32Second % 10);
;;;643    
;;;644        g_u32Reg = u32Reg;
00005e  4a07              LDR      r2,|L13.124|
000060  4301              ORRS     r1,r1,r0              ;642
000062  6011              STR      r1,[r2,#0]  ; g_u32Reg
;;;645    
;;;646        RTC->AER = RTC_WRITE_KEY;
000064  6065              STR      r5,[r4,#4]
                  |L13.102|
;;;647        while(!(RTC->AER & RTC_AER_ENF_Msk));
000066  6860              LDR      r0,[r4,#4]
000068  03c0              LSLS     r0,r0,#15
00006a  d5fc              BPL      |L13.102|
;;;648    
;;;649        RTC->TAR = (uint32_t)g_u32Reg;
00006c  6810              LDR      r0,[r2,#0]  ; g_u32Reg
00006e  61e0              STR      r0,[r4,#0x1c]
;;;650    
;;;651    }
000070  b005              ADD      sp,sp,#0x14
000072  bdf0              POP      {r4-r7,pc}
;;;652    
                          ENDP

                  |L13.116|
                          DCD      0x0000a965
                  |L13.120|
                          DCD      0x40008000
                  |L13.124|
                          DCD      ||.data||

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

                  RTC_SetDate PROC
;;;508     */
;;;509    void RTC_SetDate(uint32_t u32Year, uint32_t u32Month, uint32_t u32Day, uint32_t u32DayOfWeek)
000000  b5ff              PUSH     {r0-r7,lr}
;;;510    {
;;;511        __IO uint32_t u32Reg;
;;;512    
;;;513        RTC->AER = RTC_WRITE_KEY;
000002  4d17              LDR      r5,|L14.96|
000004  b081              SUB      sp,sp,#4              ;510
000006  4e15              LDR      r6,|L14.92|
000008  460f              MOV      r7,r1                 ;510
00000a  606e              STR      r6,[r5,#4]
                  |L14.12|
;;;514        while(!(RTC->AER & RTC_AER_ENF_Msk));
00000c  6869              LDR      r1,[r5,#4]
00000e  03c9              LSLS     r1,r1,#15
000010  d5fc              BPL      |L14.12|
;;;515    
;;;516        RTC->DWR = u32DayOfWeek & RTC_DWR_DWR_Msk;
000012  0759              LSLS     r1,r3,#29
000014  0f49              LSRS     r1,r1,#29
000016  61a9              STR      r1,[r5,#0x18]
;;;517    
;;;518        u32Reg     = ((u32Year - RTC_YEAR2000) / 10) << 20;
000018  227d              MOVS     r2,#0x7d
00001a  0112              LSLS     r2,r2,#4
00001c  210a              MOVS     r1,#0xa
00001e  1a80              SUBS     r0,r0,r2
000020  f7fffffe          BL       __aeabi_uidivmod
;;;519        u32Reg    |= (((u32Year - RTC_YEAR2000) % 10) << 16);
000024  040c              LSLS     r4,r1,#16
000026  0500              LSLS     r0,r0,#20             ;518
000028  4304              ORRS     r4,r4,r0
;;;520        u32Reg    |= ((u32Month  / 10) << 12);
00002a  210a              MOVS     r1,#0xa
00002c  4638              MOV      r0,r7
00002e  f7fffffe          BL       __aeabi_uidivmod
000032  0300              LSLS     r0,r0,#12
000034  4320              ORRS     r0,r0,r4
;;;521        u32Reg    |= ((u32Month  % 10) << 8);
000036  020c              LSLS     r4,r1,#8
000038  4304              ORRS     r4,r4,r0
;;;522        u32Reg    |= ((u32Day    / 10) << 4);
00003a  210a              MOVS     r1,#0xa
00003c  9803              LDR      r0,[sp,#0xc]
00003e  f7fffffe          BL       __aeabi_uidivmod
000042  0100              LSLS     r0,r0,#4
000044  4320              ORRS     r0,r0,r4
;;;523        u32Reg    |=  (u32Day    % 10);
;;;524        g_u32Reg   = u32Reg;
000046  4a07              LDR      r2,|L14.100|
000048  4301              ORRS     r1,r1,r0              ;523
00004a  6011              STR      r1,[r2,#0]  ; g_u32Reg
;;;525    
;;;526        RTC->AER = RTC_WRITE_KEY;
00004c  606e              STR      r6,[r5,#4]
                  |L14.78|
;;;527        while(!(RTC->AER & RTC_AER_ENF_Msk));
00004e  6868              LDR      r0,[r5,#4]
000050  03c0              LSLS     r0,r0,#15
000052  d5fc              BPL      |L14.78|
;;;528    
;;;529        RTC->CLR = (uint32_t)g_u32Reg;
000054  6810              LDR      r0,[r2,#0]  ; g_u32Reg
000056  6128              STR      r0,[r5,#0x10]
;;;530    
;;;531    }
000058  b005              ADD      sp,sp,#0x14
00005a  bdf0              POP      {r4-r7,pc}
;;;532    
                          ENDP

                  |L14.92|
                          DCD      0x0000a965
                  |L14.96|
                          DCD      0x40008000
                  |L14.100|
                          DCD      ||.data||

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

                  RTC_SetDateAndTime PROC
;;;375     */
;;;376    void RTC_SetDateAndTime(S_RTC_TIME_DATA_T *sPt)
000000  b5f8              PUSH     {r3-r7,lr}
;;;377    {
;;;378        uint32_t u32Reg;
;;;379    
;;;380        RTC->AER = RTC_WRITE_KEY;
000002  4e30              LDR      r6,|L15.196|
000004  4f2e              LDR      r7,|L15.192|
000006  4604              MOV      r4,r0                 ;377
000008  6077              STR      r7,[r6,#4]
                  |L15.10|
;;;381        while(!(RTC->AER & RTC_AER_ENF_Msk));
00000a  6870              LDR      r0,[r6,#4]
00000c  03c0              LSLS     r0,r0,#15
00000e  d5fc              BPL      |L15.10|
;;;382    
;;;383        if (sPt->u32TimeScale == RTC_CLOCK_12) {
000010  69e0              LDR      r0,[r4,#0x1c]
000012  2800              CMP      r0,#0
;;;384            RTC->TSSR &= ~RTC_TSSR_24H_12H_Msk;
;;;385    
;;;386            /*-----------------------------------------------------------------------------------------*/
;;;387            /* important, range of 12-hour PM mode is 21 upto 32                                       */
;;;388            /*-----------------------------------------------------------------------------------------*/
;;;389            if (sPt->u32AmPm == RTC_PM)
;;;390                sPt->u32Hour += 20;
;;;391        } else {
;;;392            RTC->TSSR |= RTC_TSSR_24H_12H_Msk;
000014  6970              LDR      r0,[r6,#0x14]
000016  d048              BEQ      |L15.170|
000018  2101              MOVS     r1,#1
00001a  4308              ORRS     r0,r0,r1
00001c  6170              STR      r0,[r6,#0x14]
                  |L15.30|
;;;393        }
;;;394    
;;;395        RTC->DWR = sPt->u32DayOfWeek & RTC_DWR_DWR_Msk;
00001e  68e0              LDR      r0,[r4,#0xc]
000020  0740              LSLS     r0,r0,#29
000022  0f40              LSRS     r0,r0,#29
000024  61b0              STR      r0,[r6,#0x18]
;;;396    
;;;397        u32Reg     = ((sPt->u32Year - RTC_YEAR2000) / 10) << 20;
000026  207d              MOVS     r0,#0x7d
000028  6821              LDR      r1,[r4,#0]
00002a  0100              LSLS     r0,r0,#4
00002c  1a08              SUBS     r0,r1,r0
00002e  210a              MOVS     r1,#0xa
000030  f7fffffe          BL       __aeabi_uidivmod
;;;398        u32Reg    |= (((sPt->u32Year - RTC_YEAR2000) % 10) << 16);
000034  040d              LSLS     r5,r1,#16
000036  0500              LSLS     r0,r0,#20             ;397
000038  4305              ORRS     r5,r5,r0
;;;399        u32Reg    |= ((sPt->u32Month  / 10) << 12);
00003a  210a              MOVS     r1,#0xa
00003c  6860              LDR      r0,[r4,#4]
00003e  f7fffffe          BL       __aeabi_uidivmod
000042  0300              LSLS     r0,r0,#12
000044  4328              ORRS     r0,r0,r5
;;;400        u32Reg    |= ((sPt->u32Month  % 10) << 8);
000046  020d              LSLS     r5,r1,#8
000048  4305              ORRS     r5,r5,r0
;;;401        u32Reg    |= ((sPt->u32Day    / 10) << 4);
00004a  210a              MOVS     r1,#0xa
00004c  68a0              LDR      r0,[r4,#8]
00004e  f7fffffe          BL       __aeabi_uidivmod
000052  0100              LSLS     r0,r0,#4
000054  4328              ORRS     r0,r0,r5
;;;402        u32Reg    |=  (sPt->u32Day    % 10);
000056  4301              ORRS     r1,r1,r0
;;;403        g_u32Reg = u32Reg;
000058  481b              LDR      r0,|L15.200|
00005a  6001              STR      r1,[r0,#0]  ; g_u32Reg
;;;404    
;;;405        RTC->AER = RTC_WRITE_KEY;
00005c  4918              LDR      r1,|L15.192|
00005e  6071              STR      r1,[r6,#4]
                  |L15.96|
;;;406        while(!(RTC->AER & RTC_AER_ENF_Msk));
000060  6871              LDR      r1,[r6,#4]
000062  03c9              LSLS     r1,r1,#15
000064  d5fc              BPL      |L15.96|
;;;407    
;;;408        RTC->CLR = (uint32_t)g_u32Reg;
000066  4607              MOV      r7,r0
000068  6800              LDR      r0,[r0,#0]  ; g_u32Reg
00006a  6130              STR      r0,[r6,#0x10]
;;;409    
;;;410        u32Reg     = ((sPt->u32Hour   / 10) << 20);
00006c  210a              MOVS     r1,#0xa
00006e  6920              LDR      r0,[r4,#0x10]
000070  f7fffffe          BL       __aeabi_uidivmod
;;;411        u32Reg    |= ((sPt->u32Hour   % 10) << 16);
000074  040d              LSLS     r5,r1,#16
000076  0500              LSLS     r0,r0,#20             ;410
000078  4305              ORRS     r5,r5,r0
;;;412        u32Reg    |= ((sPt->u32Minute / 10) << 12);
00007a  210a              MOVS     r1,#0xa
00007c  6960              LDR      r0,[r4,#0x14]
00007e  f7fffffe          BL       __aeabi_uidivmod
000082  0300              LSLS     r0,r0,#12
000084  4328              ORRS     r0,r0,r5
;;;413        u32Reg    |= ((sPt->u32Minute % 10) << 8);
000086  020d              LSLS     r5,r1,#8
000088  4305              ORRS     r5,r5,r0
;;;414        u32Reg    |= ((sPt->u32Second / 10) << 4);
00008a  210a              MOVS     r1,#0xa
00008c  69a0              LDR      r0,[r4,#0x18]
00008e  f7fffffe          BL       __aeabi_uidivmod
000092  0100              LSLS     r0,r0,#4
000094  4328              ORRS     r0,r0,r5
;;;415        u32Reg    |=  (sPt->u32Second % 10);
000096  4301              ORRS     r1,r1,r0
;;;416        g_u32Reg = u32Reg;
000098  6039              STR      r1,[r7,#0]  ; g_u32Reg
;;;417    
;;;418        RTC->AER = RTC_WRITE_KEY;
00009a  4809              LDR      r0,|L15.192|
00009c  6070              STR      r0,[r6,#4]
                  |L15.158|
;;;419        while(!(RTC->AER & RTC_AER_ENF_Msk));
00009e  6870              LDR      r0,[r6,#4]
0000a0  03c0              LSLS     r0,r0,#15
0000a2  d5fc              BPL      |L15.158|
;;;420    
;;;421        RTC->TLR = (uint32_t)g_u32Reg;
0000a4  6838              LDR      r0,[r7,#0]  ; g_u32Reg
0000a6  60f0              STR      r0,[r6,#0xc]
;;;422    
;;;423    }
0000a8  bdf8              POP      {r3-r7,pc}
                  |L15.170|
0000aa  0840              LSRS     r0,r0,#1              ;384
0000ac  0040              LSLS     r0,r0,#1              ;384
0000ae  6170              STR      r0,[r6,#0x14]         ;384
0000b0  6a20              LDR      r0,[r4,#0x20]         ;389
0000b2  2802              CMP      r0,#2                 ;389
0000b4  d1b3              BNE      |L15.30|
0000b6  6920              LDR      r0,[r4,#0x10]         ;390
0000b8  3014              ADDS     r0,r0,#0x14           ;390
0000ba  6120              STR      r0,[r4,#0x10]         ;390
0000bc  e7af              B        |L15.30|
;;;424    
                          ENDP

0000be  0000              DCW      0x0000
                  |L15.192|
                          DCD      0x0000a965
                  |L15.196|
                          DCD      0x40008000
                  |L15.200|
                          DCD      ||.data||

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

                  RTC_SetTickPeriod PROC
;;;726     */
;;;727    void RTC_SetTickPeriod(uint32_t u32TickSelection)
000000  4906              LDR      r1,|L16.28|
;;;728    {
;;;729        RTC->AER = RTC_WRITE_KEY;
000002  4a05              LDR      r2,|L16.24|
000004  604a              STR      r2,[r1,#4]
                  |L16.6|
;;;730        while(!(RTC->AER & RTC_AER_ENF_Msk));
000006  684a              LDR      r2,[r1,#4]
000008  03d2              LSLS     r2,r2,#15
00000a  d5fc              BPL      |L16.6|
;;;731    
;;;732        RTC->TTR = RTC->TTR & ~RTC_TTR_TTR_Msk | u32TickSelection;
00000c  6b0a              LDR      r2,[r1,#0x30]
00000e  08d2              LSRS     r2,r2,#3
000010  00d2              LSLS     r2,r2,#3
000012  4302              ORRS     r2,r2,r0
000014  630a              STR      r2,[r1,#0x30]
;;;733    }
000016  4770              BX       lr
;;;734    
                          ENDP

                  |L16.24|
                          DCD      0x0000a965
                  |L16.28|
                          DCD      0x40008000

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

                  RTC_SetTime PROC
;;;544     */
;;;545    void RTC_SetTime(uint32_t u32Hour, uint32_t u32Minute, uint32_t u32Second, uint32_t u32TimeMode, uint32_t u32AmPm)
000000  b5ff              PUSH     {r0-r7,lr}
;;;546    {
000002  b081              SUB      sp,sp,#4
;;;547        __IO uint32_t u32Reg;
;;;548    
;;;549        RTC->AER = RTC_WRITE_KEY;
000004  4c1c              LDR      r4,|L17.120|
000006  4d1b              LDR      r5,|L17.116|
000008  9a0a              LDR      r2,[sp,#0x28]
00000a  460e              MOV      r6,r1                 ;546
00000c  6065              STR      r5,[r4,#4]
                  |L17.14|
;;;550        while(!(RTC->AER & RTC_AER_ENF_Msk));
00000e  6861              LDR      r1,[r4,#4]
000010  03c9              LSLS     r1,r1,#15
000012  d5fc              BPL      |L17.14|
;;;551    
;;;552        if (u32TimeMode == RTC_CLOCK_12) {
000014  2b00              CMP      r3,#0
000016  d002              BEQ      |L17.30|
;;;553            RTC->TSSR &= ~RTC_TSSR_24H_12H_Msk;
;;;554    
;;;555            if (u32AmPm == RTC_PM)    /* important, range of 12-hour PM mode is 21 upto 32 */
;;;556                u32Hour += 20;
;;;557        } else if(u32TimeMode == RTC_CLOCK_24) {
000018  2b01              CMP      r3,#1
00001a  d008              BEQ      |L17.46|
00001c  e00b              B        |L17.54|
                  |L17.30|
00001e  6961              LDR      r1,[r4,#0x14]         ;553
000020  0849              LSRS     r1,r1,#1              ;553
000022  0049              LSLS     r1,r1,#1              ;553
000024  6161              STR      r1,[r4,#0x14]         ;553
000026  2a02              CMP      r2,#2                 ;555
000028  d105              BNE      |L17.54|
00002a  3014              ADDS     r0,r0,#0x14           ;556
00002c  e003              B        |L17.54|
                  |L17.46|
;;;558            RTC->TSSR |= RTC_TSSR_24H_12H_Msk;
00002e  6961              LDR      r1,[r4,#0x14]
000030  2201              MOVS     r2,#1
000032  4311              ORRS     r1,r1,r2
000034  6161              STR      r1,[r4,#0x14]
                  |L17.54|
;;;559        }
;;;560    
;;;561        u32Reg     = ((u32Hour   / 10) << 20);
000036  210a              MOVS     r1,#0xa
000038  f7fffffe          BL       __aeabi_uidivmod
;;;562        u32Reg    |= ((u32Hour   % 10) << 16);
00003c  040f              LSLS     r7,r1,#16
00003e  0500              LSLS     r0,r0,#20             ;561
000040  4307              ORRS     r7,r7,r0
;;;563        u32Reg    |= ((u32Minute / 10) << 12);
000042  210a              MOVS     r1,#0xa
000044  4630              MOV      r0,r6
000046  f7fffffe          BL       __aeabi_uidivmod
00004a  0300              LSLS     r0,r0,#12
;;;564        u32Reg    |= ((u32Minute % 10) << 8);
00004c  020e              LSLS     r6,r1,#8
00004e  4338              ORRS     r0,r0,r7              ;563
000050  4306              ORRS     r6,r6,r0
;;;565        u32Reg    |= ((u32Second / 10) << 4);
000052  210a              MOVS     r1,#0xa
000054  9803              LDR      r0,[sp,#0xc]
000056  f7fffffe          BL       __aeabi_uidivmod
00005a  0100              LSLS     r0,r0,#4
00005c  4330              ORRS     r0,r0,r6
;;;566        u32Reg    |=  (u32Second % 10);
;;;567    
;;;568        g_u32Reg = u32Reg;
00005e  4a07              LDR      r2,|L17.124|
000060  4301              ORRS     r1,r1,r0              ;566
000062  6011              STR      r1,[r2,#0]  ; g_u32Reg
;;;569    
;;;570        RTC->AER = RTC_WRITE_KEY;
000064  6065              STR      r5,[r4,#4]
                  |L17.102|
;;;571        while(!(RTC->AER & RTC_AER_ENF_Msk));
000066  6860              LDR      r0,[r4,#4]
000068  03c0              LSLS     r0,r0,#15
00006a  d5fc              BPL      |L17.102|
;;;572    
;;;573        RTC->TLR = (uint32_t)g_u32Reg;
00006c  6810              LDR      r0,[r2,#0]  ; g_u32Reg
00006e  60e0              STR      r0,[r4,#0xc]
;;;574    
;;;575    }
000070  b005              ADD      sp,sp,#0x14
000072  bdf0              POP      {r4-r7,pc}
;;;576    
                          ENDP

                  |L17.116|
                          DCD      0x0000a965
                  |L17.120|
                          DCD      0x40008000
                  |L17.124|
                          DCD      ||.data||

                          AREA ||.data||, DATA, ALIGN=2

                  g_u32Reg
                          DCD      0x00000000
                  g_u32hiYear
                          DCD      0x00000000
                  g_u32loYear
                          DCD      0x00000000
                  g_u32hiMonth
                          DCD      0x00000000
                  g_u32loMonth
                          DCD      0x00000000
                  g_u32hiDay
                          DCD      0x00000000
                  g_u32loDay
                          DCD      0x00000000
                  g_u32hiHour
                          DCD      0x00000000
                  g_u32loHour
                          DCD      0x00000000
                  g_u32hiMin
                          DCD      0x00000000
                  g_u32loMin
                          DCD      0x00000000
                  g_u32hiSec
                          DCD      0x00000000
                  g_u32loSec
                          DCD      0x00000000

;*** Start embedded assembler ***

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

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

 revsh r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***
