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

📄 stm32f10x_rtc.lst

📁 编译环境是 iar EWARM ,STM32 下的UCOSII
💻 LST
📖 第 1 页 / 共 3 页
字号:
    105          * Function Name  : RTC_SetCounter
    106          * Description    : Sets the RTC counter value.
    107          * Input          : - CounterValue: RTC counter new value.
    108          * Output         : None
    109          * Return         : None
    110          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    111          void RTC_SetCounter(u32 CounterValue)
    112          { 
   \                     RTC_SetCounter:
   \   00000000   10B5               PUSH     {R4,LR}
   \   00000002   0400               MOVS     R4,R0
    113            RTC_EnterConfigMode();
   \   00000004   ........           BL       RTC_EnterConfigMode
    114          
    115            /* Set RTC COUNTER MSB word */
    116            RTC->CNTH = CounterValue >> 16;
   \   00000008   ....               LDR.N    R0,??DataTable4  ;; 0x40002818
   \   0000000A   2100               MOVS     R1,R4
   \   0000000C   090C               LSRS     R1,R1,#+16
   \   0000000E   0180               STRH     R1,[R0, #+0]
    117            /* Set RTC COUNTER LSB word */
    118            RTC->CNTL = (CounterValue & RTC_LSB_Mask);
   \   00000010   001D               ADDS     R0,R0,#+4
   \   00000012   0480               STRH     R4,[R0, #+0]
    119          
    120            RTC_ExitConfigMode();
   \   00000014   ........           BL       RTC_ExitConfigMode
    121          }
   \   00000018   10BD               POP      {R4,PC}          ;; return
    122          
    123          /*******************************************************************************
    124          * Function Name  : RTC_SetPrescaler
    125          * Description    : Sets the RTC prescaler value.
    126          * Input          : - PrescalerValue: RTC prescaler new value.
    127          * Output         : None
    128          * Return         : None
    129          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    130          void RTC_SetPrescaler(u32 PrescalerValue)
    131          {
   \                     RTC_SetPrescaler:
   \   00000000   10B5               PUSH     {R4,LR}
   \   00000002   0400               MOVS     R4,R0
    132            /* Check the parameters */
    133            assert_param(IS_RTC_PRESCALER(PrescalerValue));
    134            
    135            RTC_EnterConfigMode();
   \   00000004   ........           BL       RTC_EnterConfigMode
    136          
    137            /* Set RTC PRESCALER MSB word */
    138            RTC->PRLH = (PrescalerValue & PRLH_MSB_Mask) >> 16;
   \   00000008   0448               LDR.N    R0,??RTC_SetPrescaler_0  ;; 0x40002808
   \   0000000A   14F47021           ANDS     R1,R4,#0xF0000
   \   0000000E   090C               LSRS     R1,R1,#+16
   \   00000010   0180               STRH     R1,[R0, #+0]
    139            /* Set RTC PRESCALER LSB word */
    140            RTC->PRLL = (PrescalerValue & RTC_LSB_Mask);
   \   00000012   001D               ADDS     R0,R0,#+4
   \   00000014   0480               STRH     R4,[R0, #+0]
    141          
    142            RTC_ExitConfigMode();
   \   00000016   ........           BL       RTC_ExitConfigMode
    143          }
   \   0000001A   10BD               POP      {R4,PC}          ;; return
   \                     ??RTC_SetPrescaler_0:
   \   0000001C   08280040           DC32     0x40002808
    144          
    145          /*******************************************************************************
    146          * Function Name  : RTC_SetAlarm
    147          * Description    : Sets the RTC alarm value.
    148          * Input          : - AlarmValue: RTC alarm new value.
    149          * Output         : None
    150          * Return         : None
    151          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    152          void RTC_SetAlarm(u32 AlarmValue)
    153          {  
   \                     RTC_SetAlarm:
   \   00000000   10B5               PUSH     {R4,LR}
   \   00000002   0400               MOVS     R4,R0
    154            RTC_EnterConfigMode();
   \   00000004   ........           BL       RTC_EnterConfigMode
    155          
    156            /* Set the ALARM MSB word */
    157            RTC->ALRH = AlarmValue >> 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]
    158            /* Set the ALARM LSB word */
    159            RTC->ALRL = (AlarmValue & RTC_LSB_Mask);
   \   00000010   001D               ADDS     R0,R0,#+4
   \   00000012   0480               STRH     R4,[R0, #+0]
    160          
    161            RTC_ExitConfigMode();
   \   00000014   ........           BL       RTC_ExitConfigMode
    162          }
   \   00000018   10BD               POP      {R4,PC}          ;; return
   \   0000001A   00BF               Nop      
   \                     ??RTC_SetAlarm_0:
   \   0000001C   20280040           DC32     0x40002820
    163          
    164          /*******************************************************************************
    165          * Function Name  : RTC_GetDivider
    166          * Description    : Gets the RTC divider value.
    167          * Input          : None
    168          * Output         : None
    169          * Return         : RTC Divider value.
    170          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    171          u32 RTC_GetDivider(void)
    172          {
    173            u32 tmp = 0x00;
    174          
    175            tmp = ((u32)RTC->DIVH & (u32)0x000F) << 16;
   \                     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
    176            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
    177          
    178            return tmp;
   \   00000010   7047               BX       LR               ;; return
   \   00000012   00BF               Nop      
   \                     ??RTC_GetDivider_0:
   \   00000014   10280040           DC32     0x40002810
   \   00000018   14280040           DC32     0x40002814
    179          }
    180          
    181          /*******************************************************************************
    182          * Function Name  : RTC_WaitForLastTask
    183          * Description    : Waits until last write operation on RTC registers has finished.
    184          *                  This function must be called before any write to RTC registers.
    185          * Input          : None
    186          * Output         : None
    187          * Return         : None
    188          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    189          void RTC_WaitForLastTask(void)
    190          {
    191            /* Loop until RTOFF flag is set */
    192            while ((RTC->CRL & RTC_FLAG_RTOFF) == (u16)RESET)
   \                     RTC_WaitForLastTask:
   \                     ??RTC_WaitForLastTask_0:
   \   00000000   ....               LDR.N    R0,??DataTable11  ;; 0x40002804
   \   00000002   0088               LDRH     R0,[R0, #+0]
   \   00000004   8006               LSLS     R0,R0,#+26
   \   00000006   FBD5               BPL.N    ??RTC_WaitForLastTask_0
    193            {
    194            }
    195          }
   \   00000008   7047               BX       LR               ;; return
    196          
    197          /*******************************************************************************
    198          * Function Name  : RTC_WaitForSynchro
    199          * Description    : Waits until the RTC registers (RTC_CNT, RTC_ALR and RTC_PRL)
    200          *                  are synchronized with RTC APB clock.
    201          *                  This function must be called before any read operation after
    202          *                  an APB reset or an APB clock stop.
    203          * Input          : None
    204          * Output         : None
    205          * Return         : None
    206          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    207          void RTC_WaitForSynchro(void)
    208          {
    209            /* Clear RSF flag */
    210            RTC->CRL &= (u16)~RTC_FLAG_RSF;
   \                     RTC_WaitForSynchro:
   \   00000000   ....               LDR.N    R0,??DataTable11  ;; 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]
    211          
    212            /* Loop until RSF flag is set */
    213            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
    214            {
    215            }
    216          }
   \   00000010   7047               BX       LR               ;; return
   \   00000012   00BF               Nop      
   \                     ??RTC_WaitForSynchro_0:
   \   00000014   F7FF0000           DC32     0xfff7
    217          
    218          /*******************************************************************************
    219          * Function Name  : RTC_GetFlagStatus
    220          * Description    : Checks whether the specified RTC flag is set or not.
    221          * Input          : - RTC_FLAG: specifies the flag to check.
    222          *                    This parameter can be one the following values:
    223          *                       - RTC_FLAG_RTOFF: RTC Operation OFF flag
    224          *                       - RTC_FLAG_RSF: Registers Synchronized flag
    225          *                       - RTC_FLAG_OW: Overflow flag

⌨️ 快捷键说明

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