你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【Nucleo板开发日志】+ FLASH写测试

[复制链接]
wudianjun2001 发布时间:2014-8-31 13:42
STM32F302R8T6的FLASH为64K,地址从0x0800 0000~0x0800 FFFF,分成32页,每页2K字节。  w; I- ^$ V( o: t7 h/ ~
第00页    0x0800 0000~0x0800 07FF         2KB
' U( W5 q. _; l4 Z6 O! p+ E( U+ a第01页    0x0800 0800~0x0800 0FFF         2KB
, {% o- J" ^: F. c第02页    0x0800 1000~0x0800 17FF         2KB
& a4 N7 }% m, i( W第03页    0x0800 1800~0x0800 1FFF         2KB
2 G8 D7 z7 w* n8 H; R* T# J第04页    0x0800 2000~0x0800 27FF         2KB
0 S& F* ?! R9 e3 _  g9 v第05页    0x0800 2800~0x0800 2FFF         2KB, W2 _; K3 t# X  H. l& K8 e- p. K& a
第06页    0x0800 3000~0x0800 37FF         2KB
/ w. B" w, z! M! S$ m8 j% A. p( t) \第07页    0x0800 3800~0x0800 3FFF         2KB
; |& q0 x6 ]# c: Q第08页    0x0800 4000~0x0800 47FF         2KB
* E% F" K3 ~( N$ t8 x# g6 t! Q0 `) p第09页    0x0800 4800~0x0800 4FFF         2KB3 P; N) `) F( W
第10页    0x0800 5000~0x0800 57FF         2KB' R6 k( k6 K1 s3 d" H, X
第11页    0x0800 5800~0x0800 5FFF         2KB2 x. t" ~! y# s8 o7 P3 W, J
第12页    0x0800 6000~0x0800 67FF         2KB
" e& m5 b0 {7 D& U第13页    0x0800 6800~0x0800 6FFF         2KB
  h) x$ o$ \6 s) [' w8 Q: `第14页    0x0800 7000~0x0800 77FF         2KB
* i  v2 {2 \, P& R第15页    0x0800 7800~0x0800 7FFF         2KB& m4 s4 d2 U+ \1 q& F/ p
第16页    0x0800 8000~0x0800 87FF         2KB; Y' L3 C& g! x( w% d: A
第17页    0x0800 8800~0x0800 8FFF         2KB9 i4 B/ V) f  `/ k. F3 ^
第18页    0x0800 9000~0x0800 97FF         2KB
# `' g2 T1 [: h% l第19页    0x0800 9800~0x0800 9FFF         2KB6 I, V2 ^& g* `# j! f7 j, K% O
第20页    0x0800 A000~0x0800 A7FF         2KB0 {6 a$ e/ b9 g4 P" t- V  w( N
第21页    0x0800 A800~0x0800 AFFF         2KB
. w9 |7 N( S% S9 {* p5 V( o+ z0 e3 l第22页    0x0800 B000~0x0800 B7FF         2KB
8 j7 k9 ^" j' i" L/ z5 S3 R( c第23页    0x0800 B800~0x0800 BFFF         2KB' O/ Q' O; r! |; }
第24页    0x0800 C000~0x0800 C7FF         2KB$ t+ H; j3 g7 I) f/ N
第25页    0x0800 C800~0x0800 CFFF         2KB- E9 D$ I2 p; m3 ]/ c+ {% g
第26页    0x0800 D000~0x0800 D7FF         2KB1 l0 j4 v; D& ^4 A( t1 U. R1 }  k
第27页    0x0800 D800~0x0800 DFFF         2KB1 p! `$ c0 S" v/ h" j
第28页    0x0800 E000~0x0800 E7FF         2KB8 A8 ?) u! W' C! B: w! D- B
第29页    0x0800 E800~0x0800 EFFF         2KB1 T0 ~$ {% X- q7 K; M+ ]
第30页    0x0800 F000~0x0800 F7FF         2KB
! r/ E) q3 F. P) n$ H) n第31页    0x0800 F800~0x0800 FFFF         2KB
. H; q, }0 [* a% b8 z1 ?    对FLASH块进行写操作之前必须先擦除,对应位置只能1->0改写而不能0->1改写,所以必须先擦除,擦除后所有单元值为0xFF。
) v( V3 x/ u4 [( V- ] / y4 ~# X2 F; j9 K7 }! x
这里只给出FLASH写操作的代码: `  _) l8 z8 A6 }7 y0 i
#define IAP_ADDR  0x0800F000              //写起始地址* W- C# p' N9 p8 x' ~
1.jpg
1 |* X% j& r, w* D进入debug,打开内存窗口,可以看到FLASH的情况。- {+ n. z& t  I$ g4 K" ^
2.jpg
& I6 d' g) \4 X/ q, G% q读操作很简单,这里就不描述了。
赞 收藏 评论4 发布时间:2014-8-31 13:42

举报

4个回答
wudianjun2001 回答时间:2014-8-31 13:43:57

RE:【Nucleo板开发日志】+ FLASH写测试

/******************************************************************************  B- J# B" W. c  o
* º¯ÊýÃû³Æ£ºFlash_Test2 O2 q0 C4 d3 i# W/ B
* º¯Êý¹¦ÄÜ£ºFLASH IAPд²âÊÔ  w0 H% z) m+ _$ ?* e
* Èë¿Ú²ÎÊý£ºÎÞ7 J  s% ]9 @0 i# x
* ³ö¿Ú²ÎÊý£ºÎÞ7 K& T. V- j, ~$ j  q1 T& J
* ÐÞ¸Äʱ¼ä£º2014-08-31
) V, q; q7 e4 ~1 C( _******************************************************************************/
( H* Z* J0 w6 {$ I. `! Lvoid Flash_Test (void)
" B! ~5 G) h3 |$ b{
8 R7 b3 B, z5 _) r' D    uint32_t i = 0;3 ?6 y1 q* h! U  E+ q
    //uint8_t Read_Buff[256];
5 I6 G$ X8 K3 }& _    uint8_t Write_Buff[256];                                //дÊý¾Ý»º³åÇø. ~* X9 [, I6 _, J7 D* Y4 T( @
    uint32_t dat;; |" Q5 E& {1 s+ o5 u
    FLASH_Status Status = FLASH_COMPLETE;                   //״̬λ
, u1 o1 _7 Q' N2 s$ @# W    for (i = 0; i < 256; i ++)                              //»º³åÇø³õʼ»¯7 h2 y7 O8 {7 O& ?7 t2 i9 x
    {
5 }  O: |. j# P7 X0 S7 D! \        Write_Buff = i;5 o, u& }0 M; m, ?% U1 u% \8 n
    }
- L0 F+ Z6 L! X2 s& [    & M8 D, w9 g/ B) g
    FLASH_SetLatency (FLASH_Latency_1);                     //ÉèÖòÙ×÷µÈ´ýÖÜÆÚ
( n+ ]0 ^' ~6 Z+ Z7 b  A    FLASH_HalfCycleAccessCmd (ENABLE);                      //ʹÄÜFLASH°ëÖÜÆÚ·ÃÎÊ) l( ?/ e; ?6 f2 }" L
    FLASH_PrefetchBufferCmd (ENABLE);                       //ʹÄÜԤȡָ»º³åÇø
% W1 f, E4 ]" y8 {3 j! y    2 F" W0 P1 D1 o" K& D! }
    FLASH_Unlock ();                                        //½âËø
8 s! J# U6 {0 W& c5 f$ I    Status = FLASH_ErasePage (IAP_ADDR);                    //²Á³ýÒ³
# x# I* r; }+ D7 q: F4 Z, I$ o5 P    for (i = 0; i < 256; i += 4)
+ ?/ F- i$ n4 w) [    {
) \; P6 V; \4 E        //dat = Write_Buff
wudianjun2001 回答时间:2014-8-31 13:44:47

RE:【Nucleo板开发日志】+ FLASH写测试

字体不太对,从编辑器里拷出来汉字就成乱码了
wudianjun2001 回答时间:2014-8-31 13:45:14

RE:【Nucleo板开发日志】+ FLASH写测试

/******************************************************************************
" v# T' T/ ~1 D* 函数名称:Flash_Test
, D9 Z8 P% d; u* 函数功能:FLASH IAP写测试
/ W2 q1 {# ~! m: m; l6 q* 入口参数:无6 V) n( V! k' t/ a) u4 X5 Z2 a
* 出口参数:无
) o0 e* h) y+ {! b( v' d* 修改时间:2014-08-31
" p8 d! g3 A* S# K4 |******************************************************************************/8 G4 s5 j: g4 B" u7 E
void Flash_Test (void)" w+ i/ k; @- [) H  [( c
{; [# |2 E5 s5 t. y
    uint32_t i = 0;
, P1 [- j. L/ `8 L% g* Z: E2 i    //uint8_t Read_Buff[256];
6 Q& Y# R  D, e9 A1 B0 N3 P    uint8_t Write_Buff[256];                                //写数据缓冲区4 l+ c4 e( r5 z" q
    uint32_t dat;. |; i6 p# Y1 h  M
    FLASH_Status Status = FLASH_COMPLETE;                   //状态位
! a0 u; b. P" S1 a    for (i = 0; i < 256; i ++)                              //缓冲区初始化% v& D, N( [! @: x
    {; G8 u* J9 v& e( z& W$ [
        Write_Buff = i;/ S2 W; _- e! \- Z0 M
    }+ @4 G( }8 D1 `8 u& g
    2 Z3 W) T) q+ D; s. f) y
    FLASH_SetLatency (FLASH_Latency_1);                     //设置操作等待周期; d9 k9 p0 U9 u' h8 F6 f
    FLASH_HalfCycleAccessCmd (ENABLE);                      //使能FLASH半周期访问
+ {- q* x2 i3 f' t" z    FLASH_PrefetchBufferCmd (ENABLE);                       //使能预取指缓冲区# i% H) Q& }0 y, `- d5 x" X
   
4 K# S" G; o: X# V. e    FLASH_Unlock ();                                        //解锁
- [% }! J$ `1 X/ H4 @    Status = FLASH_ErasePage (IAP_ADDR);                    //擦除页
# T" O$ e, f8 n! l& h( m4 _, z    for (i = 0; i < 256; i += 4)1 q  Z3 o! u: ]* A
    {
8 ~4 p2 g4 E. n0 q7 X% ^$ f3 p        //dat = Write_Buff
霹雳之火 回答时间:2014-8-31 14:25:28

RE:【Nucleo板开发日志】+ FLASH写测试

第一篇分析flash读写,好贴,
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版