?? stm32f10x_rtc.lst
字號:
\ 00000006 0800 MOVS R0,R1
136 return (((uint32_t)RTC->CNTH << 16 ) | tmp) ;
\ 00000008 .... LDR.N R1,??DataTable13_3 ;; 0x40002818
\ 0000000A 0988 LDRH R1,[R1, #+0]
\ 0000000C 89B2 UXTH R1,R1 ;; ZeroExt R1,R1,#+16,#+16
\ 0000000E 80B2 UXTH R0,R0 ;; ZeroExt R0,R0,#+16,#+16
\ 00000010 50EA0140 ORRS R0,R0,R1, LSL #+16
\ 00000014 7047 BX LR ;; return
137 }
138
139 /**
140 * @brief Sets the RTC counter value.
141 * @param CounterValue: RTC counter new value.
142 * @retval None
143 */
\ In section .text, align 2, keep-with-next
144 void RTC_SetCounter(uint32_t CounterValue)
145 {
\ RTC_SetCounter:
\ 00000000 10B5 PUSH {R4,LR}
\ 00000002 0400 MOVS R4,R0
146 RTC_EnterConfigMode();
\ 00000004 ........ BL RTC_EnterConfigMode
147 /* Set RTC COUNTER MSB word */
148 RTC->CNTH = CounterValue >> 16;
\ 00000008 200C LSRS R0,R4,#+16
\ 0000000A .... LDR.N R1,??DataTable13_3 ;; 0x40002818
\ 0000000C 0880 STRH R0,[R1, #+0]
149 /* Set RTC COUNTER LSB word */
150 RTC->CNTL = (CounterValue & RTC_LSB_MASK);
\ 0000000E .... LDR.N R0,??DataTable13_2 ;; 0x4000281c
\ 00000010 0480 STRH R4,[R0, #+0]
151 RTC_ExitConfigMode();
\ 00000012 ........ BL RTC_ExitConfigMode
152 }
\ 00000016 10BD POP {R4,PC} ;; return
153
154 /**
155 * @brief Sets the RTC prescaler value.
156 * @param PrescalerValue: RTC prescaler new value.
157 * @retval None
158 */
\ In section .text, align 2, keep-with-next
159 void RTC_SetPrescaler(uint32_t PrescalerValue)
160 {
\ RTC_SetPrescaler:
\ 00000000 10B5 PUSH {R4,LR}
\ 00000002 0400 MOVS R4,R0
161 /* Check the parameters */
162 assert_param(IS_RTC_PRESCALER(PrescalerValue));
163
164 RTC_EnterConfigMode();
\ 00000004 ........ BL RTC_EnterConfigMode
165 /* Set RTC PRESCALER MSB word */
166 RTC->PRLH = (PrescalerValue & PRLH_MSB_MASK) >> 16;
\ 00000008 200C LSRS R0,R4,#+16
\ 0000000A 10F00F00 ANDS R0,R0,#0xF
\ 0000000E .... LDR.N R1,??DataTable13_4 ;; 0x40002808
\ 00000010 0880 STRH R0,[R1, #+0]
167 /* Set RTC PRESCALER LSB word */
168 RTC->PRLL = (PrescalerValue & RTC_LSB_MASK);
\ 00000012 .... LDR.N R0,??DataTable13_5 ;; 0x4000280c
\ 00000014 0480 STRH R4,[R0, #+0]
169 RTC_ExitConfigMode();
\ 00000016 ........ BL RTC_ExitConfigMode
170 }
\ 0000001A 10BD POP {R4,PC} ;; return
171
172 /**
173 * @brief Sets the RTC alarm value.
174 * @param AlarmValue: RTC alarm new value.
175 * @retval None
176 */
\ In section .text, align 2, keep-with-next
177 void RTC_SetAlarm(uint32_t AlarmValue)
178 {
\ RTC_SetAlarm:
\ 00000000 10B5 PUSH {R4,LR}
\ 00000002 0400 MOVS R4,R0
179 RTC_EnterConfigMode();
\ 00000004 ........ BL RTC_EnterConfigMode
180 /* Set the ALARM MSB word */
181 RTC->ALRH = AlarmValue >> 16;
\ 00000008 200C LSRS R0,R4,#+16
\ 0000000A .... LDR.N R1,??DataTable13_6 ;; 0x40002820
\ 0000000C 0880 STRH R0,[R1, #+0]
182 /* Set the ALARM LSB word */
183 RTC->ALRL = (AlarmValue & RTC_LSB_MASK);
\ 0000000E .... LDR.N R0,??DataTable13_7 ;; 0x40002824
\ 00000010 0480 STRH R4,[R0, #+0]
184 RTC_ExitConfigMode();
\ 00000012 ........ BL RTC_ExitConfigMode
185 }
\ 00000016 10BD POP {R4,PC} ;; return
186
187 /**
188 * @brief Gets the RTC divider value.
189 * @param None
190 * @retval RTC Divider value.
191 */
\ In section .text, align 2, keep-with-next
192 uint32_t RTC_GetDivider(void)
193 {
194 uint32_t tmp = 0x00;
\ RTC_GetDivider:
\ 00000000 0020 MOVS R0,#+0
195 tmp = ((uint32_t)RTC->DIVH & (uint32_t)0x000F) << 16;
\ 00000002 .... LDR.N R1,??DataTable13_8 ;; 0x40002810
\ 00000004 0988 LDRH R1,[R1, #+0]
\ 00000006 89B2 UXTH R1,R1 ;; ZeroExt R1,R1,#+16,#+16
\ 00000008 11F00F01 ANDS R1,R1,#0xF
\ 0000000C 0904 LSLS R1,R1,#+16
\ 0000000E 0800 MOVS R0,R1
196 tmp |= RTC->DIVL;
\ 00000010 .... LDR.N R1,??DataTable13_9 ;; 0x40002814
\ 00000012 0988 LDRH R1,[R1, #+0]
\ 00000014 89B2 UXTH R1,R1 ;; ZeroExt R1,R1,#+16,#+16
\ 00000016 0843 ORRS R0,R1,R0
197 return tmp;
\ 00000018 7047 BX LR ;; return
198 }
199
200 /**
201 * @brief Waits until last write operation on RTC registers has finished.
202 * @note This function must be called before any write to RTC registers.
203 * @param None
204 * @retval None
205 */
\ In section .text, align 2, keep-with-next
206 void RTC_WaitForLastTask(void)
207 {
208 /* Loop until RTOFF flag is set */
209 while ((RTC->CRL & RTC_FLAG_RTOFF) == (uint16_t)RESET)
\ RTC_WaitForLastTask:
\ ??RTC_WaitForLastTask_0:
\ 00000000 .... LDR.N R0,??DataTable13_1 ;; 0x40002804
\ 00000002 0088 LDRH R0,[R0, #+0]
\ 00000004 8006 LSLS R0,R0,#+26
\ 00000006 FBD5 BPL.N ??RTC_WaitForLastTask_0
210 {
211 }
212 }
\ 00000008 7047 BX LR ;; return
213
214 /**
215 * @brief Waits until the RTC registers (RTC_CNT, RTC_ALR and RTC_PRL)
216 * are synchronized with RTC APB clock.
217 * @note This function must be called before any read operation after an APB reset
218 * or an APB clock stop.
219 * @param None
220 * @retval None
221 */
\ In section .text, align 2, keep-with-next
222 void RTC_WaitForSynchro(void)
223 {
224 /* Clear RSF flag */
225 RTC->CRL &= (uint16_t)~RTC_FLAG_RSF;
\ RTC_WaitForSynchro:
\ 00000000 .... LDR.N R0,??DataTable13_1 ;; 0x40002804
\ 00000002 0088 LDRH R0,[R0, #+0]
\ 00000004 4FF6F771 MOVW R1,#+65527
\ 00000008 0840 ANDS R0,R1,R0
\ 0000000A .... LDR.N R1,??DataTable13_1 ;; 0x40002804
\ 0000000C 0880 STRH R0,[R1, #+0]
226 /* Loop until RSF flag is set */
227 while ((RTC->CRL & RTC_FLAG_RSF) == (uint16_t)RESET)
\ ??RTC_WaitForSynchro_0:
\ 0000000E .... LDR.N R0,??DataTable13_1 ;; 0x40002804
\ 00000010 0088 LDRH R0,[R0, #+0]
\ 00000012 0007 LSLS R0,R0,#+28
\ 00000014 FBD5 BPL.N ??RTC_WaitForSynchro_0
228 {
229 }
230 }
\ 00000016 7047 BX LR ;; return
231
232 /**
233 * @brief Checks whether the specified RTC flag is set or not.
234 * @param RTC_FLAG: specifies the flag to check.
235 * This parameter can be one the following values:
236 * @arg RTC_FLAG_RTOFF: RTC Operation OFF flag
237 * @arg RTC_FLAG_RSF: Registers Synchronized flag
238 * @arg RTC_FLAG_OW: Overflow flag
239 * @arg RTC_FLAG_ALR: Alarm flag
240 * @arg RTC_FLAG_SEC: Second flag
241 * @retval The new state of RTC_FLAG (SET or RESET).
242 */
\ In section .text, align 2, keep-with-next
243 FlagStatus RTC_GetFlagStatus(uint16_t RTC_FLAG)
244 {
\ RTC_GetFlagStatus:
\ 00000000 0100 MOVS R1,R0
245 FlagStatus bitstatus = RESET;
\ 00000002 0020 MOVS R0,#+0
246
247 /* Check the parameters */
248 assert_param(IS_RTC_GET_FLAG(RTC_FLAG));
249
250 if ((RTC->CRL & RTC_FLAG) != (uint16_t)RESET)
\ 00000004 .... LDR.N R2,??DataTable13_1 ;; 0x40002804
\ 00000006 1288 LDRH R2,[R2, #+0]
\ 00000008 92B2 UXTH R2,R2 ;; ZeroExt R2,R2,#+16,#+16
\ 0000000A 0A42 TST R2,R1
\ 0000000C 02D0 BEQ.N ??RTC_GetFlagStatus_0
251 {
252 bitstatus = SET;
\ 0000000E 0122 MOVS R2,#+1
\ 00000010 1000 MOVS R0,R2
\ 00000012 01E0 B.N ??RTC_GetFlagStatus_1
253 }
254 else
255 {
256 bitstatus = RESET;
\ ??RTC_GetFlagStatus_0:
\ 00000014 0022 MOVS R2,#+0
\ 00000016 1000 MOVS R0,R2
257 }
258 return bitstatus;
\ ??RTC_GetFlagStatus_1:
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -