📄 stm32f10x_flash.lst
字号:
142 0010 00200240 .word 1073881088
143 0014 23016745 .word 1164378403
144 .LFE29:
146 .section .text.FLASH_Lock,"ax",%progbits
147 .align 2
148 .global FLASH_Lock
149 .thumb
150 .thumb_func
152 FLASH_Lock:
153 .LFB30:
190:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c ****
191:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** /**
192:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** * @brief Locks the FLASH Program Erase Controller.
193:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** * @param None
194:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** * @retval : None
195:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** */
196:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** void FLASH_Lock(void)
197:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** {
154 .loc 1 197 0
155 @ args = 0, pretend = 0, frame = 0
156 @ frame_needed = 0, uses_anonymous_args = 0
157 @ link register save eliminated.
198:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** /* Set the Lock Bit to lock the FPEC and the FCR */
199:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** FLASH->CR |= CR_LOCK_Set;
158 .loc 1 199 0
159 0000 024A ldr r2, .L19
160 0002 1369 ldr r3, [r2, #16]
161 0004 43F08003 orr r3, r3, #128
162 0008 1361 str r3, [r2, #16]
200:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** }
163 .loc 1 200 0
164 000a 7047 bx lr
165 .L20:
166 .align 2
167 .L19:
168 000c 00200240 .word 1073881088
169 .LFE30:
171 .section .text.FLASH_GetUserOptionByte,"ax",%progbits
172 .align 2
173 .global FLASH_GetUserOptionByte
174 .thumb
175 .thumb_func
177 FLASH_GetUserOptionByte:
178 .LFB40:
201:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c ****
202:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** /**
203:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** * @brief Erases a specified FLASH page.
204:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** * @param Page_Address: The page address to be erased.
205:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** * @retval : FLASH Status: The returned value can be: FLASH_BUSY,
206:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** * FLASH_ERROR_PG, FLASH_ERROR_WRP, FLASH_COMPLETE or
207:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** * FLASH_TIMEOUT.
208:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** */
209:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** FLASH_Status FLASH_ErasePage(uint32_t Page_Address)
210:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** {
211:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** FLASH_Status status = FLASH_COMPLETE;
212:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** /* Check the parameters */
213:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** assert_param(IS_FLASH_ADDRESS(Page_Address));
214:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** /* Wait for last operation to be completed */
215:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** status = FLASH_WaitForLastOperation(EraseTimeout);
216:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c ****
217:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** if(status == FLASH_COMPLETE)
218:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** {
219:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** /* if the previous operation is completed, proceed to erase the page */
220:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** FLASH->CR|= CR_PER_Set;
221:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** FLASH->AR = Page_Address;
222:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** FLASH->CR|= CR_STRT_Set;
223:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c ****
224:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** /* Wait for last operation to be completed */
225:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** status = FLASH_WaitForLastOperation(EraseTimeout);
226:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** if(status != FLASH_BUSY)
227:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** {
228:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** /* if the erase operation is completed, disable the PER Bit */
229:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** FLASH->CR &= CR_PER_Reset;
230:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** }
231:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** }
232:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** /* Return the Erase Status */
233:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** return status;
234:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** }
235:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c ****
236:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** /**
237:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** * @brief Erases all FLASH pages.
238:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** * @param None
239:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** * @retval : FLASH Status: The returned value can be: FLASH_BUSY,
240:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** * FLASH_ERROR_PG, FLASH_ERROR_WRP, FLASH_COMPLETE or
241:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** * FLASH_TIMEOUT.
242:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** */
243:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** FLASH_Status FLASH_EraseAllPages(void)
244:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** {
245:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** FLASH_Status status = FLASH_COMPLETE;
246:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** /* Wait for last operation to be completed */
247:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** status = FLASH_WaitForLastOperation(EraseTimeout);
248:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c ****
249:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** if(status == FLASH_COMPLETE)
250:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** {
251:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** /* if the previous operation is completed, proceed to erase all pages */
252:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** FLASH->CR |= CR_MER_Set;
253:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** FLASH->CR |= CR_STRT_Set;
254:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c ****
255:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** /* Wait for last operation to be completed */
256:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** status = FLASH_WaitForLastOperation(EraseTimeout);
257:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** if(status != FLASH_BUSY)
258:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** {
259:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** /* if the erase operation is completed, disable the MER Bit */
260:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** FLASH->CR &= CR_MER_Reset;
261:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** }
262:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** }
263:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** /* Return the Erase Status */
264:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** return status;
265:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** }
266:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c ****
267:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** /**
268:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** * @brief Erases the FLASH option bytes.
269:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** * @param None
270:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** * @retval : FLASH Status: The returned value can be: FLASH_BUSY,
271:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** * FLASH_ERROR_PG, FLASH_ERROR_WRP, FLASH_COMPLETE or
272:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** * FLASH_TIMEOUT.
273:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** */
274:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** FLASH_Status FLASH_EraseOptionBytes(void)
275:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** {
276:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** FLASH_Status status = FLASH_COMPLETE;
277:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c ****
278:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** /* Wait for last operation to be completed */
279:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** status = FLASH_WaitForLastOperation(EraseTimeout);
280:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** if(status == FLASH_COMPLETE)
281:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** {
282:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** /* Authorize the small information block programming */
283:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** FLASH->OPTKEYR = FLASH_KEY1;
284:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** FLASH->OPTKEYR = FLASH_KEY2;
285:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c ****
286:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** /* if the previous operation is completed, proceed to erase the option bytes */
287:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** FLASH->CR |= CR_OPTER_Set;
288:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** FLASH->CR |= CR_STRT_Set;
289:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** /* Wait for last operation to be completed */
290:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** status = FLASH_WaitForLastOperation(EraseTimeout);
291:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c ****
292:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** if(status == FLASH_COMPLETE)
293:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** {
294:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** /* if the erase operation is completed, disable the OPTER Bit */
295:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** FLASH->CR &= CR_OPTER_Reset;
296:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c ****
297:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** /* Enable the Option Bytes Programming operation */
298:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** FLASH->CR |= CR_OPTPG_Set;
299:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** /* Enable the readout access */
300:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** OB->RDP= RDP_Key;
301:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** /* Wait for last operation to be completed */
302:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** status = FLASH_WaitForLastOperation(ProgramTimeout);
303:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c ****
304:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** if(status != FLASH_BUSY)
305:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** {
306:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** /* if the program operation is completed, disable the OPTPG Bit */
307:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** FLASH->CR &= CR_OPTPG_Reset;
308:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** }
309:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** }
310:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** else
311:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** {
312:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** if (status != FLASH_BUSY)
313:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** {
314:lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c **** /* Disable the OPTPG Bit */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -