📄 stm32f10x_flash.lst
字号:
##############################################################################
# #
# IAR ARM ANSI C/C++ Compiler V4.42A/W32 KICKSTART 26/Dec/2008 18:22:06 #
# Copyright 1999-2005 IAR Systems. All rights reserved. #
# #
# Cpu mode = thumb #
# Endian = little #
# Stack alignment = 4 #
# Source file = F:\PROJECT\STM32_UCOSII\CPU\ST\STM32\src\stm32f10x_f #
# lash.c #
# Command line = F:\PROJECT\STM32_UCOSII\CPU\ST\STM32\src\stm32f10x_f #
# lash.c -lCN F:\PROJECT\STM32_UCOSII\EvalBoards\ST\ST #
# M3210E-EVAL\IAR\OS-Probe\Flash\List\ -o #
# F:\PROJECT\STM32_UCOSII\EvalBoards\ST\STM3210E-EVAL\ #
# IAR\OS-Probe\Flash\Obj\ -z6 --no_unroll --no_inline #
# --no_tbaa --no_scheduling --debug --cpu_mode thumb #
# --endian little --cpu cortex-M3 --stack_align 4 -e #
# --fpu None --dlib_config "E:\Program Files\IAR #
# Systems\Embedded Workbench 4.0 #
# Kickstart\arm\LIB\dl7mptnnl8n.h" -I #
# F:\PROJECT\STM32_UCOSII\EvalBoards\ST\STM3210E-EVAL\ #
# IAR\OS-Probe\ -I F:\PROJECT\STM32_UCOSII\EvalBoards\ #
# ST\STM3210E-EVAL\IAR\OS-Probe\..\BSP\ -I #
# F:\PROJECT\STM32_UCOSII\EvalBoards\ST\STM3210E-EVAL\ #
# IAR\OS-Probe\..\..\..\..\..\CPU\ST\STM32\inc\ -I #
# F:\PROJECT\STM32_UCOSII\EvalBoards\ST\STM3210E-EVAL\ #
# IAR\OS-Probe\..\..\..\..\..\uC-CPU\ -I #
# F:\PROJECT\STM32_UCOSII\EvalBoards\ST\STM3210E-EVAL\ #
# IAR\OS-Probe\..\..\..\..\..\uC-CPU\ARM-Cortex-M3\IAR #
# \ -I F:\PROJECT\STM32_UCOSII\EvalBoards\ST\STM3210E- #
# EVAL\IAR\OS-Probe\..\..\..\..\..\uC-LCD\Source\ -I #
# F:\PROJECT\STM32_UCOSII\EvalBoards\ST\STM3210E-EVAL\ #
# IAR\OS-Probe\..\..\..\..\..\uC-LIB\ -I #
# F:\PROJECT\STM32_UCOSII\EvalBoards\ST\STM3210E-EVAL\ #
# IAR\OS-Probe\..\..\..\..\..\uCOS-II\Ports\ARM-Cortex #
# -M3\Generic\IAR\ -I F:\PROJECT\STM32_UCOSII\EvalBoar #
# ds\ST\STM3210E-EVAL\IAR\OS-Probe\..\..\..\..\..\uCOS #
# -II\Source\ -I F:\PROJECT\STM32_UCOSII\EvalBoards\ST #
# \STM3210E-EVAL\IAR\OS-Probe\..\..\..\..\..\uC-Probe\ #
# Target\Communication\Generic\RS-232\Source\ -I #
# F:\PROJECT\STM32_UCOSII\EvalBoards\ST\STM3210E-EVAL\ #
# IAR\OS-Probe\..\..\..\..\..\uC-Probe\Target\Communic #
# ation\Generic\RS-232\Ports\ST\STM32\ -I #
# F:\PROJECT\STM32_UCOSII\EvalBoards\ST\STM3210E-EVAL\ #
# IAR\OS-Probe\..\..\..\..\..\uC-Probe\Target\Communic #
# ation\Generic\Source\ -I F:\PROJECT\STM32_UCOSII\Eva #
# lBoards\ST\STM3210E-EVAL\IAR\OS-Probe\..\..\..\..\.. #
# \uC-Probe\Target\Plugins\uCOS-II\ -I "E:\Program #
# Files\IAR Systems\Embedded Workbench 4.0 #
# Kickstart\arm\INC\" #
# List file = F:\PROJECT\STM32_UCOSII\EvalBoards\ST\STM3210E-EVAL\ #
# IAR\OS-Probe\Flash\List\stm32f10x_flash.lst #
# Object file = F:\PROJECT\STM32_UCOSII\EvalBoards\ST\STM3210E-EVAL\ #
# IAR\OS-Probe\Flash\Obj\stm32f10x_flash.r79 #
# #
# #
##############################################################################
F:\PROJECT\STM32_UCOSII\CPU\ST\STM32\src\stm32f10x_flash.c
1 /******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
2 * File Name : stm32f10x_flash.c
3 * Author : MCD Application Team
4 * Version : V2.0
5 * Date : 05/23/2008
6 * Description : This file provides all the FLASH firmware functions.
7 ********************************************************************************
8 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
9 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
10 * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
11 * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
12 * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
13 * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
14 * FOR MORE INFORMATION PLEASE CAREFULLY READ THE LICENSE AGREEMENT FILE LOCATED
15 * IN THE ROOT DIRECTORY OF THIS FIRMWARE PACKAGE.
16 *******************************************************************************/
17
18 /* Includes ------------------------------------------------------------------*/
19 #include "stm32f10x_flash.h"
20
21 /* Private typedef -----------------------------------------------------------*/
22 /* Private define ------------------------------------------------------------*/
23 /* Flash Access Control Register bits */
24 #define ACR_LATENCY_Mask ((u32)0x00000038)
25 #define ACR_HLFCYA_Mask ((u32)0xFFFFFFF7)
26 #define ACR_PRFTBE_Mask ((u32)0xFFFFFFEF)
27
28 #ifdef _FLASH_PROG
29 /* Flash Access Control Register bits */
30 #define ACR_PRFTBS_Mask ((u32)0x00000020)
31
32 /* Flash Control Register bits */
33 #define CR_PG_Set ((u32)0x00000001)
34 #define CR_PG_Reset ((u32)0x00001FFE)
35
36 #define CR_PER_Set ((u32)0x00000002)
37 #define CR_PER_Reset ((u32)0x00001FFD)
38
39 #define CR_MER_Set ((u32)0x00000004)
40 #define CR_MER_Reset ((u32)0x00001FFB)
41
42 #define CR_OPTPG_Set ((u32)0x00000010)
43 #define CR_OPTPG_Reset ((u32)0x00001FEF)
44
45 #define CR_OPTER_Set ((u32)0x00000020)
46 #define CR_OPTER_Reset ((u32)0x00001FDF)
47
48 #define CR_STRT_Set ((u32)0x00000040)
49
50 #define CR_LOCK_Set ((u32)0x00000080)
51
52 /* FLASH Mask */
53 #define RDPRT_Mask ((u32)0x00000002)
54 #define WRP0_Mask ((u32)0x000000FF)
55 #define WRP1_Mask ((u32)0x0000FF00)
56 #define WRP2_Mask ((u32)0x00FF0000)
57 #define WRP3_Mask ((u32)0xFF000000)
58
59 /* FLASH Keys */
60 #define RDP_Key ((u16)0x00A5)
61 #define FLASH_KEY1 ((u32)0x45670123)
62 #define FLASH_KEY2 ((u32)0xCDEF89AB)
63
64 /* Delay definition */
65 #define EraseTimeout ((u32)0x00000FFF)
66 #define ProgramTimeout ((u32)0x0000000F)
67 #endif
68
69 /* Private macro -------------------------------------------------------------*/
70 /* Private variables ---------------------------------------------------------*/
71 /* Private function prototypes -----------------------------------------------*/
72 #ifdef _FLASH_PROG
73 static void delay(void);
74 #endif
75
76 /* Private functions ---------------------------------------------------------*/
77 /*******************************************************************************
78 * Function Name : FLASH_SetLatency
79 * Description : Sets the code latency value.
80 * Input : - FLASH_Latency: specifies the FLASH Latency value.
81 * This parameter can be one of the following values:
82 * - FLASH_Latency_0: FLASH Zero Latency cycle
83 * - FLASH_Latency_1: FLASH One Latency cycle
84 * - FLASH_Latency_2: FLASH Two Latency cycles
85 * Output : None
86 * Return : None
87 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
88 void FLASH_SetLatency(u32 FLASH_Latency)
89 {
90 /* Check the parameters */
91 assert_param(IS_FLASH_LATENCY(FLASH_Latency));
92
93 /* Sets the Latency value */
94 FLASH->ACR &= ACR_LATENCY_Mask;
\ FLASH_SetLatency:
\ 00000000 .... LDR.N R1,??DataTable2 ;; 0x40022000
\ 00000002 0A68 LDR R2,[R1, #+0]
\ 00000004 12F03802 ANDS R2,R2,#0x38
\ 00000008 0A60 STR R2,[R1, #+0]
95 FLASH->ACR |= FLASH_Latency;
\ 0000000A 0A68 LDR R2,[R1, #+0]
\ 0000000C 1043 ORRS R0,R0,R2
\ 0000000E 0860 STR R0,[R1, #+0]
96 }
\ 00000010 7047 BX LR ;; return
97
98 /*******************************************************************************
99 * Function Name : FLASH_HalfCycleAccessCmd
100 * Description : Enables or disables the Half cycle flash access.
101 * Input : - FLASH_HalfCycle: specifies the FLASH Half cycle Access mode.
102 * This parameter can be one of the following values:
103 * - FLASH_HalfCycleAccess_Enable: FLASH Half Cycle Enable
104 * - FLASH_HalfCycleAccess_Disable: FLASH Half Cycle Disable
105 * Output : None
106 * Return : None
107 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
108 void FLASH_HalfCycleAccessCmd(u32 FLASH_HalfCycleAccess)
109 {
110 /* Check the parameters */
111 assert_param(IS_FLASH_HALFCYCLEACCESS_STATE(FLASH_HalfCycleAccess));
112
113 /* Enable or disable the Half cycle access */
114 FLASH->ACR &= ACR_HLFCYA_Mask;
\ FLASH_HalfCycleAccessCmd:
\ 00000000 .... LDR.N R1,??DataTable2 ;; 0x40022000
\ 00000002 0A68 LDR R2,[R1, #+0]
\ 00000004 0823 MOVS R3,#+8
\ 00000006 9A43 BICS R2,R2,R3
\ 00000008 0A60 STR R2,[R1, #+0]
115 FLASH->ACR |= FLASH_HalfCycleAccess;
\ 0000000A 0A68 LDR R2,[R1, #+0]
\ 0000000C 1043 ORRS R0,R0,R2
\ 0000000E 0860 STR R0,[R1, #+0]
116 }
\ 00000010 7047 BX LR ;; return
117
118 /*******************************************************************************
119 * Function Name : FLASH_PrefetchBufferCmd
120 * Description : Enables or disables the Prefetch Buffer.
121 * Input : - FLASH_PrefetchBuffer: specifies the Prefetch buffer status.
122 * This parameter can be one of the following values:
123 * - FLASH_PrefetchBuffer_Enable: FLASH Prefetch Buffer Enable
124 * - FLASH_PrefetchBuffer_Disable: FLASH Prefetch Buffer Disable
125 * Output : None
126 * Return : None
127 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
128 void FLASH_PrefetchBufferCmd(u32 FLASH_PrefetchBuffer)
129 {
130 /* Check the parameters */
131 assert_param(IS_FLASH_PREFETCHBUFFER_STATE(FLASH_PrefetchBuffer));
132
133 /* Enable or disable the Prefetch Buffer */
134 FLASH->ACR &= ACR_PRFTBE_Mask;
\ FLASH_PrefetchBufferCmd:
\ 00000000 .... LDR.N R1,??DataTable2 ;; 0x40022000
\ 00000002 0A68 LDR R2,[R1, #+0]
\ 00000004 1023 MOVS R3,#+16
\ 00000006 9A43 BICS R2,R2,R3
\ 00000008 0A60 STR R2,[R1, #+0]
135 FLASH->ACR |= FLASH_PrefetchBuffer;
\ 0000000A 0A68 LDR R2,[R1, #+0]
\ 0000000C 1043 ORRS R0,R0,R2
\ 0000000E 0860 STR R0,[R1, #+0]
136 }
\ 00000010 7047 BX LR ;; return
\ In segment CODE, align 4, keep-with-next
\ ??DataTable2:
\ 00000000 00200240 DC32 0x40022000
137
138 #ifdef _FLASH_PROG
139 /*******************************************************************************
140 * Function Name : FLASH_Unlock
141 * Description : Unlocks the FLASH Program Erase Controller.
142 * Input : None
143 * Output : None
144 * Return : None
145 *******************************************************************************/
146 void FLASH_Unlock(void)
147 {
148 /* Authorize the FPEC Access */
149 FLASH->KEYR = FLASH_KEY1;
150 FLASH->KEYR = FLASH_KEY2;
151 }
152
153 /*******************************************************************************
154 * Function Name : FLASH_Lock
155 * Description : Locks the FLASH Program Erase Controller.
156 * Input : None
157 * Output : None
158 * Return : None
159 *******************************************************************************/
160 void FLASH_Lock(void)
161 {
162 /* Set the Lock Bit to lock the FPEC and the FCR */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -