📄 stm32f10x_rtc.lst
字号:
\ 00000014 ........ BL RTC_ExitConfigMode
120 }
\ 00000018 10BD POP {R4,PC} ;; return
121
122 /*******************************************************************************
123 * Function Name : RTC_SetPrescaler
124 * Description : Sets the RTC prescaler value.
125 * Input : - PrescalerValue: RTC prescaler new value.
126 * Output : None
127 * Return : None
128 *******************************************************************************/
\ In section .XML, align 4, keep-with-next
129 void RTC_SetPrescaler(u32 PrescalerValue)
130 {
\ RTC_SetPrescaler:
\ 00000000 10B5 PUSH {R4,LR}
\ 00000002 0400 MOVS R4,R0
131 /* Check the parameters */
132 assert_param(IS_RTC_PRESCALER(PrescalerValue));
133
134 RTC_EnterConfigMode();
\ 00000004 ........ BL RTC_EnterConfigMode
135
136 /* Set RTC PRESCALER MSB word */
137 RTC->PRLH = (PrescalerValue & PRLH_MSB_Mask) >> 0x10;
\ 00000008 14F47020 ANDS R0,R4,#0xF0000
\ 0000000C 000C LSRS R0,R0,#+16
\ 0000000E 0449 LDR.N R1,??RTC_SetPrescaler_0 ;; 0x40002808
\ 00000010 0880 STRH R0,[R1, #+0]
138 /* Set RTC PRESCALER LSB word */
139 RTC->PRLL = (PrescalerValue & RTC_LSB_Mask);
\ 00000012 0448 LDR.N R0,??RTC_SetPrescaler_0+0x4 ;; 0x4000280c
\ 00000014 2100 MOVS R1,R4
\ 00000016 0180 STRH R1,[R0, #+0]
140
141 RTC_ExitConfigMode();
\ 00000018 ........ BL RTC_ExitConfigMode
142 }
\ 0000001C 10BD POP {R4,PC} ;; return
\ 0000001E 00BF Nop
\ ??RTC_SetPrescaler_0:
\ 00000020 08280040 DC32 0x40002808
\ 00000024 0C280040 DC32 0x4000280c
143
144 /*******************************************************************************
145 * Function Name : RTC_SetAlarm
146 * Description : Sets the RTC alarm value.
147 * Input : - AlarmValue: RTC alarm new value.
148 * Output : None
149 * Return : None
150 *******************************************************************************/
\ In section .XML, align 4, keep-with-next
151 void RTC_SetAlarm(u32 AlarmValue)
152 {
\ RTC_SetAlarm:
\ 00000000 10B5 PUSH {R4,LR}
\ 00000002 0400 MOVS R4,R0
153 RTC_EnterConfigMode();
\ 00000004 ........ BL RTC_EnterConfigMode
154
155 /* Set the ALARM MSB word */
156 RTC->ALRH = (AlarmValue & RTC_MSB_Mask) >> 16;
\ 00000008 200C LSRS R0,R4,#+16
\ 0000000A 0449 LDR.N R1,??RTC_SetAlarm_0 ;; 0x40002820
\ 0000000C 0880 STRH R0,[R1, #+0]
157 /* Set the ALARM LSB word */
158 RTC->ALRL = (AlarmValue & RTC_LSB_Mask);
\ 0000000E 0448 LDR.N R0,??RTC_SetAlarm_0+0x4 ;; 0x40002824
\ 00000010 2100 MOVS R1,R4
\ 00000012 0180 STRH R1,[R0, #+0]
159
160 RTC_ExitConfigMode();
\ 00000014 ........ BL RTC_ExitConfigMode
161 }
\ 00000018 10BD POP {R4,PC} ;; return
\ 0000001A 00BF Nop
\ ??RTC_SetAlarm_0:
\ 0000001C 20280040 DC32 0x40002820
\ 00000020 24280040 DC32 0x40002824
162
163 /*******************************************************************************
164 * Function Name : RTC_GetDivider
165 * Description : Gets the RTC divider value.
166 * Input : None
167 * Output : None
168 * Return : RTC Divider value.
169 *******************************************************************************/
\ In section .XML, align 4, keep-with-next
170 u32 RTC_GetDivider(void)
171 {
172 u32 tmp = 0x00;
\ RTC_GetDivider:
\ 00000000 0021 MOVS R1,#+0
\ 00000002 0800 MOVS R0,R1
173
174 tmp = ((u32)RTC->DIVH & (u32)0x000F) << 0x10;
\ 00000004 0549 LDR.N R1,??RTC_GetDivider_0 ;; 0x40002810
\ 00000006 0988 LDRH R1,[R1, #+0]
\ 00000008 89B2 UXTH R1,R1 ;; ZeroExtS R1,R1,#+16,#+16
\ 0000000A 0907 LSLS R1,R1,#+28 ;; ZeroExtS R1,R1,#+28,#+28
\ 0000000C 090F LSRS R1,R1,#+28
\ 0000000E 0804 LSLS R0,R1,#+16
175 tmp |= RTC->DIVL;
\ 00000010 0100 MOVS R1,R0
\ 00000012 0348 LDR.N R0,??RTC_GetDivider_0+0x4 ;; 0x40002814
\ 00000014 0088 LDRH R0,[R0, #+0]
\ 00000016 80B2 UXTH R0,R0 ;; ZeroExtS R0,R0,#+16,#+16
\ 00000018 0843 ORRS R0,R0,R1
176
177 return tmp;
\ 0000001A 7047 BX LR ;; return
\ ??RTC_GetDivider_0:
\ 0000001C 10280040 DC32 0x40002810
\ 00000020 14280040 DC32 0x40002814
178 }
179
180 /*******************************************************************************
181 * Function Name : RTC_WaitForLastTask
182 * Description : Waits until last write operation on RTC registers has finished.
183 * This function must be called before any write to RTC registers.
184 * Input : None
185 * Output : None
186 * Return : None
187 *******************************************************************************/
\ In section .XML, align 4, keep-with-next
188 void RTC_WaitForLastTask(void)
189 {
190 /* Loop until RTOFF flag is set */
191 while ((RTC->CRL & RTC_FLAG_RTOFF) == (u16)RESET)
\ RTC_WaitForLastTask:
\ ??RTC_WaitForLastTask_0:
\ 00000000 .... LDR.N R0,??DataTable22 ;; 0x40002804
\ 00000002 0088 LDRH R0,[R0, #+0]
\ 00000004 8006 LSLS R0,R0,#+26
\ 00000006 FBD5 BPL.N ??RTC_WaitForLastTask_0
192 {
193 }
194 }
\ 00000008 7047 BX LR ;; return
195
196 /*******************************************************************************
197 * Function Name : RTC_WaitForSynchro
198 * Description : Waits until the RTC registers (RTC_CNT, RTC_ALR and RTC_PRL)
199 * are synchronized with RTC APB clock.
200 * This function must be called before any read operation after
201 * an APB reset or an APB clock stop.
202 * Input : None
203 * Output : None
204 * Return : None
205 *******************************************************************************/
\ In section .XML, align 4, keep-with-next
206 void RTC_WaitForSynchro(void)
207 {
208 /* Clear RSF flag */
209 RTC->CRL &= (u16)~RTC_FLAG_RSF;
\ RTC_WaitForSynchro:
\ 00000000 .... LDR.N R0,??DataTable22 ;; 0x40002804
\ 00000002 0088 LDRH R0,[R0, #+0]
\ 00000004 0449 LDR.N R1,??RTC_WaitForSynchro_0 ;; 0xfff7
\ 00000006 0140 ANDS R1,R1,R0
\ 00000008 .... LDR.N R0,??DataTable22 ;; 0x40002804
\ 0000000A 0180 STRH R1,[R0, #+0]
210
211 /* Loop until RSF flag is set */
212 while ((RTC->CRL & RTC_FLAG_RSF) == (u16)RESET)
\ ??RTC_WaitForSynchro_1:
\ 0000000C .... LDR.N R0,??DataTable22 ;; 0x40002804
\ 0000000E 0088 LDRH R0,[R0, #+0]
\ 00000010 0007 LSLS R0,R0,#+28
\ 00000012 FBD5 BPL.N ??RTC_WaitForSynchro_1
213 {
214 }
215 }
\ 00000014 7047 BX LR ;; return
\ 00000016 00BF Nop
\ ??RTC_WaitForSynchro_0:
\ 00000018 F7FF0000 DC32 0xfff7
216
217 /*******************************************************************************
218 * Function Name : RTC_GetFlagStatus
219 * Description : Checks whether the specified RTC flag is set or not.
220 * Input : - RTC_FLAG: specifies the flag to check.
221 * This parameter can be one the following values:
222 * - RTC_FLAG_RTOFF: RTC Operation OFF flag
223 * - RTC_FLAG_RSF: Registers Synchronized flag
224 * - RTC_FLAG_OW: Overflow flag
225 * - RTC_FLAG_ALR: Alarm flag
226 * - RTC_FLAG_SEC: Second flag
227 * Output : None
228 * Return : The new state of RTC_FLAG (SET or RESET).
229 *******************************************************************************/
\ In section .XML, align 4, keep-with-next
230 FlagStatus RTC_GetFlagStatus(u16 RTC_FLAG)
231 {
\ RTC_GetFlagStatus:
\ 00000000 0100 MOVS R1,R0
232 FlagStatus bitstatus = RESET;
\ 00000002 0022 MOVS R2,#+0
\ 00000004 1000 MOVS R0,R2
233
234 /* Check the parameters */
235 assert_param(IS_RTC_GET_FLAG(RTC_FLAG));
236
237 if ((RTC->CRL & RTC_FLAG) != (u16)RESET)
\ 00000006 .... LDR.N R2,??DataTable22 ;; 0x40002804
\ 00000008 1288 LDRH R2,[R2, #+0]
\ 0000000A 0A40 ANDS R2,R2,R1
\ 0000000C 1300 MOVS R3,R2
\ 0000000E 9BB2 UXTH R3,R3 ;; ZeroExtS R3,R3,#+16,#+16
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -