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

📄 stm32f10x_rtc.lst

📁 针对STM32F103的UCOS移植
💻 LST
📖 第 1 页 / 共 3 页
字号:
    117            RTC_EnterConfigMode();
   \   00000004   ........           BL       RTC_EnterConfigMode
    118          
    119            /* Set RTC COUNTER MSB word */
    120            RTC->CNTH = (CounterValue & RTC_MSB_Mask) >> 16;
   \   00000008   ....               LDR.N    R0,??DataTable4  ;; 0x40002818
   \   0000000A   2100               MOVS     R1,R4
   \   0000000C   090C               LSRS     R1,R1,#+16
   \   0000000E   0180               STRH     R1,[R0, #+0]
    121            /* Set RTC COUNTER LSB word */
    122            RTC->CNTL = (CounterValue & RTC_LSB_Mask);
   \   00000010   001D               ADDS     R0,R0,#+4
   \   00000012   0480               STRH     R4,[R0, #+0]
    123          
    124            RTC_ExitConfigMode();
   \   00000014   ........           BL       RTC_ExitConfigMode
    125          }
   \   00000018   10BD               POP      {R4,PC}          ;; return
    126          
    127          /*******************************************************************************
    128          * Function Name  : RTC_GetPrescaler
    129          * Description    : Gets the RTC prescaler value.
    130          * Input          : None
    131          * Output         : None
    132          * Return         : RTC prescaler value.
    133          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    134          u32 RTC_GetPrescaler(void)
    135          {
    136            u32 tmp = 0x00;
    137          
    138            tmp = ((u32)RTC->PRLH & (u32)0x000F) << 0x10;
   \                     RTC_GetPrescaler:
   \   00000000   ....               LDR.N    R0,??DataTable6  ;; 0x40002808
   \   00000002   0088               LDRH     R0,[R0, #+0]
   \   00000004   0007               LSLS     R0,R0,#+28
   \   00000006   000F               LSRS     R0,R0,#+28
   \   00000008   0104               LSLS     R1,R0,#+16
    139            tmp |= RTC->PRLL;
   \   0000000A   0248               LDR.N    R0,??RTC_GetPrescaler_0  ;; 0x4000280c
   \   0000000C   0088               LDRH     R0,[R0, #+0]
   \   0000000E   0843               ORRS     R0,R0,R1
    140          
    141            return tmp;
   \   00000010   7047               BX       LR               ;; return
   \   00000012   00BF               Nop      
   \                     ??RTC_GetPrescaler_0:
   \   00000014   0C280040           DC32     0x4000280c
    142          }
    143          
    144          /*******************************************************************************
    145          * Function Name  : RTC_SetPrescaler
    146          * Description    : Sets the RTC prescaler value.
    147          * Input          : - PrescalerValue: RTC prescaler new value.
    148          * Output         : None
    149          * Return         : None
    150          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    151          void RTC_SetPrescaler(u32 PrescalerValue)
    152          {
   \                     RTC_SetPrescaler:
   \   00000000   10B5               PUSH     {R4,LR}
   \   00000002   0400               MOVS     R4,R0
    153            /* Check the parameters */
    154            assert(IS_RTC_PRESCALER(PrescalerValue));
    155            
    156            RTC_EnterConfigMode();
   \   00000004   ........           BL       RTC_EnterConfigMode
    157          
    158            /* Set RTC PRESCALER MSB word */
    159            RTC->PRLH = (PrescalerValue & PRLH_MSB_Mask) >> 0x10;
   \   00000008   ....               LDR.N    R0,??DataTable6  ;; 0x40002808
   \   0000000A   14F47021           ANDS     R1,R4,#0xF0000
   \   0000000E   090C               LSRS     R1,R1,#+16
   \   00000010   0180               STRH     R1,[R0, #+0]
    160            /* Set RTC PRESCALER LSB word */
    161            RTC->PRLL = (PrescalerValue & RTC_LSB_Mask);
   \   00000012   001D               ADDS     R0,R0,#+4
   \   00000014   0480               STRH     R4,[R0, #+0]
    162          
    163            RTC_ExitConfigMode();
   \   00000016   ........           BL       RTC_ExitConfigMode
    164          }
   \   0000001A   10BD               POP      {R4,PC}          ;; return
    165          
    166          /*******************************************************************************
    167          * Function Name  : RTC_SetAlarm
    168          * Description    : Sets the RTC alarm value.
    169          * Input          : - AlarmValue: RTC alarm new value.
    170          * Output         : None
    171          * Return         : None
    172          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    173          void RTC_SetAlarm(u32 AlarmValue)
    174          {  
   \                     RTC_SetAlarm:
   \   00000000   10B5               PUSH     {R4,LR}
   \   00000002   0400               MOVS     R4,R0
    175            RTC_EnterConfigMode();
   \   00000004   ........           BL       RTC_EnterConfigMode
    176          
    177            /* Set the ALARM MSB word */
    178            RTC->ALRH = (AlarmValue & RTC_MSB_Mask) >> 16;
   \   00000008   0448               LDR.N    R0,??RTC_SetAlarm_0  ;; 0x40002820
   \   0000000A   2100               MOVS     R1,R4
   \   0000000C   090C               LSRS     R1,R1,#+16
   \   0000000E   0180               STRH     R1,[R0, #+0]
    179            /* Set the ALARM LSB word */
    180            RTC->ALRL = (AlarmValue & RTC_LSB_Mask);
   \   00000010   001D               ADDS     R0,R0,#+4
   \   00000012   0480               STRH     R4,[R0, #+0]
    181          
    182            RTC_ExitConfigMode();
   \   00000014   ........           BL       RTC_ExitConfigMode
    183          }
   \   00000018   10BD               POP      {R4,PC}          ;; return
   \   0000001A   00BF               Nop      
   \                     ??RTC_SetAlarm_0:
   \   0000001C   20280040           DC32     0x40002820
    184          
    185          /*******************************************************************************
    186          * Function Name  : RTC_GetDivider
    187          * Description    : Gets the RTC divider value.
    188          * Input          : None
    189          * Output         : None
    190          * Return         : RTC Divider value.
    191          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    192          u32 RTC_GetDivider(void)
    193          {
    194            u32 tmp = 0x00;
    195          
    196            tmp = ((u32)RTC->DIVH & (u32)0x000F) << 0x10;
   \                     RTC_GetDivider:
   \   00000000   0448               LDR.N    R0,??RTC_GetDivider_0  ;; 0x40002810
   \   00000002   0088               LDRH     R0,[R0, #+0]
   \   00000004   0007               LSLS     R0,R0,#+28
   \   00000006   000F               LSRS     R0,R0,#+28
   \   00000008   0104               LSLS     R1,R0,#+16
    197            tmp |= RTC->DIVL;
   \   0000000A   0348               LDR.N    R0,??RTC_GetDivider_0+0x4  ;; 0x40002814
   \   0000000C   0088               LDRH     R0,[R0, #+0]
   \   0000000E   0843               ORRS     R0,R0,R1
    198          
    199            return tmp;
   \   00000010   7047               BX       LR               ;; return
   \   00000012   00BF               Nop      
   \                     ??RTC_GetDivider_0:
   \   00000014   10280040           DC32     0x40002810
   \   00000018   14280040           DC32     0x40002814
    200          }
    201          
    202          /*******************************************************************************
    203          * Function Name  : RTC_WaitForLastTask
    204          * Description    : Waits until last write operation on RTC registers has finished.
    205          *                  This function must be called before any write to RTC registers.
    206          * Input          : None
    207          * Output         : None
    208          * Return         : None
    209          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    210          void RTC_WaitForLastTask(void)
    211          {
    212            /* Loop until RTOFF flag is set */
    213            while ((RTC->CRL & RTC_FLAG_RTOFF) == (u16)RESET)
   \                     RTC_WaitForLastTask:
   \                     ??RTC_WaitForLastTask_0:
   \   00000000   ....               LDR.N    R0,??DataTable13  ;; 0x40002804
   \   00000002   0088               LDRH     R0,[R0, #+0]
   \   00000004   8006               LSLS     R0,R0,#+26
   \   00000006   FBD5               BPL.N    ??RTC_WaitForLastTask_0
    214            {
    215            }
    216          }
   \   00000008   7047               BX       LR               ;; return
    217          
    218          /*******************************************************************************
    219          * Function Name  : RTC_WaitForSynchro
    220          * Description    : Waits until the RTC registers (RTC_CNT, RTC_ALR and RTC_PRL)
    221          *                  are synchronized with RTC APB clock.
    222          *                  This function must be called before any read operation after
    223          *                  an APB reset or an APB clock stop.
    224          * Input          : None
    225          * Output         : None
    226          * Return         : None
    227          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    228          void RTC_WaitForSynchro(void)
    229          {
    230            /* Clear RSF flag */
    231            RTC->CRL &= (u16)~RTC_FLAG_RSF;
   \                     RTC_WaitForSynchro:
   \   00000000   ....               LDR.N    R0,??DataTable13  ;; 0x40002804
   \   00000002   0188               LDRH     R1,[R0, #+0]
   \   00000004   034A               LDR.N    R2,??RTC_WaitForSynchro_0  ;; 0xfff7
   \   00000006   0A40               ANDS     R2,R2,R1
   \   00000008   0280               STRH     R2,[R0, #+0]
    232          
    233            /* Loop until RSF flag is set */
    234            while ((RTC->CRL & RTC_FLAG_RSF) == (u16)RESET)
   \                     ??RTC_WaitForSynchro_1:
   \   0000000A   0188               LDRH     R1,[R0, #+0]
   \   0000000C   0907               LSLS     R1,R1,#+28
   \   0000000E   FCD5               BPL.N    ??RTC_WaitForSynchro_1
    235            {
    236            }
    237          }
   \   00000010   7047               BX       LR               ;; return
   \   00000012   00BF               Nop      
   \                     ??RTC_WaitForSynchro_0:
   \   00000014   F7FF0000           DC32     0xfff7
    238          
    239          /*******************************************************************************
    240          * Function Name  : RTC_GetFlagStatus
    241          * Description    : Checks whether the specified RTC flag is set or not.
    242          * Input          : - RTC_FLAG: specifies the flag to check.
    243          *                    This parameter can be one the following values:
    244          *                       - RTC_FLAG_RTOFF: RTC Operation OFF flag
    245          *                       - RTC_FLAG_RSF: Registers Synchronized flag

⌨️ 快捷键说明

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