📄 stm32f10x_rtc.lst
字号:
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 + -