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

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

[复制链接]
wudianjun2001 发布时间:2014-8-31 13:42
STM32F302R8T6的FLASH为64K,地址从0x0800 0000~0x0800 FFFF,分成32页,每页2K字节。
6 W) g+ Z; m' j% K5 z* z2 r第00页    0x0800 0000~0x0800 07FF         2KB' S" B  ?5 C& k" `+ _0 ~
第01页    0x0800 0800~0x0800 0FFF         2KB, Q6 O1 R5 I* d' |6 i, A3 p
第02页    0x0800 1000~0x0800 17FF         2KB# ?1 q6 o6 d# `+ P4 a* Y7 C. O
第03页    0x0800 1800~0x0800 1FFF         2KB- g, d1 ]# ^5 @
第04页    0x0800 2000~0x0800 27FF         2KB
2 T1 @" R2 L- G8 {4 M) O第05页    0x0800 2800~0x0800 2FFF         2KB' ]1 `, t/ m" e( l  B
第06页    0x0800 3000~0x0800 37FF         2KB
8 {7 j0 `; w- V4 |* }第07页    0x0800 3800~0x0800 3FFF         2KB8 _) r9 e" t/ x& v- f
第08页    0x0800 4000~0x0800 47FF         2KB
' p% J+ v0 w/ \5 l5 Z0 k) }第09页    0x0800 4800~0x0800 4FFF         2KB
$ J/ O) J3 |) S/ M第10页    0x0800 5000~0x0800 57FF         2KB; H7 f: p1 [# C4 Y. t2 q6 _
第11页    0x0800 5800~0x0800 5FFF         2KB
: h5 J" _5 b, y6 Z第12页    0x0800 6000~0x0800 67FF         2KB
* v# K0 ~1 n# i第13页    0x0800 6800~0x0800 6FFF         2KB
, |3 p: {% E$ q第14页    0x0800 7000~0x0800 77FF         2KB
. u9 ^7 x" w) G7 n+ c! K; y& C第15页    0x0800 7800~0x0800 7FFF         2KB
' A( r' |& p  k) x% W3 `( h第16页    0x0800 8000~0x0800 87FF         2KB5 j/ O  `$ H7 q9 Z1 q- c$ H
第17页    0x0800 8800~0x0800 8FFF         2KB! N! ?& Q! J, [/ K5 j
第18页    0x0800 9000~0x0800 97FF         2KB
1 {0 u2 k4 h& Z5 f, l第19页    0x0800 9800~0x0800 9FFF         2KB
, p; b$ t& L6 s第20页    0x0800 A000~0x0800 A7FF         2KB
7 k9 O' }! _5 Z. \0 b6 L" V第21页    0x0800 A800~0x0800 AFFF         2KB
7 x: ^  c! X# `3 A3 b& p! ?第22页    0x0800 B000~0x0800 B7FF         2KB8 ?; a$ [6 a/ A) m3 }" r/ p% v' ]0 N
第23页    0x0800 B800~0x0800 BFFF         2KB
2 n/ u$ x; I6 ~: A4 \第24页    0x0800 C000~0x0800 C7FF         2KB
+ q3 n2 D* r% D第25页    0x0800 C800~0x0800 CFFF         2KB- Z5 D& @: n; J$ ?( N, |2 ]
第26页    0x0800 D000~0x0800 D7FF         2KB: w, C2 ~7 ]/ F
第27页    0x0800 D800~0x0800 DFFF         2KB
- J1 ?% Y. S( s  B3 J第28页    0x0800 E000~0x0800 E7FF         2KB
6 A0 p, `, Z# @+ K% H' c* s第29页    0x0800 E800~0x0800 EFFF         2KB
" U: f; z# y, B: T# u第30页    0x0800 F000~0x0800 F7FF         2KB
" C, B" N7 g1 Q3 d第31页    0x0800 F800~0x0800 FFFF         2KB
6 X7 j7 U* ~: T    对FLASH块进行写操作之前必须先擦除,对应位置只能1->0改写而不能0->1改写,所以必须先擦除,擦除后所有单元值为0xFF。: D, {4 A. l' K( U& t
 
: Z& Q& Q" F3 ]9 w$ w- T. G8 B这里只给出FLASH写操作的代码5 ^  q: Y( B- h; o6 u. s
#define IAP_ADDR  0x0800F000              //写起始地址
+ ^# s1 ~& b: ~* E. j 1.jpg 3 t. U+ @, K  V  X" U! P; D
进入debug,打开内存窗口,可以看到FLASH的情况。& [8 a5 M5 t/ j
2.jpg
  E" w8 Y) i: j; K" \" W, ~读操作很简单,这里就不描述了。
收藏 评论4 发布时间:2014-8-31 13:42

举报

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

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

/******************************************************************************
, V: [0 B4 k. P; E* º¯ÊýÃû³Æ£ºFlash_Test
4 l1 s% P/ |% W0 E( h; g5 L8 f& m# }* x( V* º¯Êý¹¦ÄÜ£ºFLASH IAPд²âÊÔ+ l0 T9 H) ^1 E! n1 d. w1 f
* Èë¿Ú²ÎÊý£ºÎÞ' Q/ ?0 g, G, V: V
* ³ö¿Ú²ÎÊý£ºÎÞ
- G: q) ?( r2 L- }* ÐÞ¸Äʱ¼ä£º2014-08-31
& L: Q* Y6 `# ?1 p. ?8 }' k0 f# u* p******************************************************************************/
' k& a& L" P4 xvoid Flash_Test (void)
# C0 H8 W) C/ Z) D{
' `+ n5 }* P+ m- g, R) K8 ~1 V$ }    uint32_t i = 0;/ U. B( a9 `3 `3 n4 V# C: W) Q
    //uint8_t Read_Buff[256];
/ `! N, p  p. P+ f) e2 F5 X  f8 n: q    uint8_t Write_Buff[256];                                //дÊý¾Ý»º³åÇø
: R3 I# H, ?2 u$ ^. j    uint32_t dat;7 _3 j3 r- u* Z3 b4 ~1 u+ d& l
    FLASH_Status Status = FLASH_COMPLETE;                   //״̬λ
+ q- O4 r* {( y! g3 A! ~    for (i = 0; i < 256; i ++)                              //»º³åÇø³õʼ»¯& c$ |  X3 P1 D4 l- M: x
    {
& o( U. ^$ t" e) o7 i        Write_Buff = i;: v- j9 _( C& }5 Y
    }
: D. X+ w9 h, d" o( V. o, |   
. S* D" q4 g( s7 d    FLASH_SetLatency (FLASH_Latency_1);                     //ÉèÖòÙ×÷µÈ´ýÖÜÆÚ
, P5 O5 n( s9 x$ `. }8 ^    FLASH_HalfCycleAccessCmd (ENABLE);                      //ʹÄÜFLASH°ëÖÜÆÚ·ÃÎÊ
9 `. |2 _' |8 Z) j- L    FLASH_PrefetchBufferCmd (ENABLE);                       //ʹÄÜԤȡָ»º³åÇø
: H3 G# T+ N9 Z    8 E4 h) }* e1 Y1 }" f% Z
    FLASH_Unlock ();                                        //½âËø
' i0 Q, U; q9 @6 v0 v! ]    Status = FLASH_ErasePage (IAP_ADDR);                    //²Á³ýÒ³
. i9 O8 j- w. t7 b3 m! V    for (i = 0; i < 256; i += 4)
# B  \; n( @1 d/ E    {# \' B: w6 \" b8 f- t, i
        //dat = Write_Buff
wudianjun2001 回答时间:2014-8-31 13:44:47

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

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

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

/******************************************************************************
( {8 z2 U" f2 l5 p$ B& V, P! u* 函数名称:Flash_Test- _0 D3 ?5 h; R7 ^, s4 Z, t2 X! S
* 函数功能:FLASH IAP写测试
2 _) G; j/ m( }( L* ?: r* 入口参数:无) H  f: p' a" m  T7 k6 q' r4 L2 i7 U
* 出口参数:无
; @! t5 N0 j" N; N# N* 修改时间:2014-08-31
; t% ]7 c8 |, c( ?4 |******************************************************************************/
, {/ n6 X: E3 g6 dvoid Flash_Test (void)* i9 Y* P6 R9 [; ]
{
9 b8 g' ?# [! ?% }1 f2 Y7 W    uint32_t i = 0;/ Z, N3 u( H6 A3 T
    //uint8_t Read_Buff[256];& J# ?& I- ^; L
    uint8_t Write_Buff[256];                                //写数据缓冲区; T- v* z6 f4 l
    uint32_t dat;
& E4 a! U# O3 B  e    FLASH_Status Status = FLASH_COMPLETE;                   //状态位$ i+ F  D$ s& g/ ?
    for (i = 0; i < 256; i ++)                              //缓冲区初始化
, H! }* y+ [/ Q, D$ M' M6 e    {; h$ H# H, Y  H5 S# l# ~2 B/ K  \
        Write_Buff = i;" T5 f% y+ P' O- `, _
    }
5 t. A3 h/ y  u1 e4 [6 ]    1 o& v5 Q# v+ k8 Y
    FLASH_SetLatency (FLASH_Latency_1);                     //设置操作等待周期/ n, s6 a8 u+ G! t0 K; o
    FLASH_HalfCycleAccessCmd (ENABLE);                      //使能FLASH半周期访问- K/ p) Q8 ]# E1 m% A7 Y7 X: \
    FLASH_PrefetchBufferCmd (ENABLE);                       //使能预取指缓冲区5 l0 y. `& q$ a: a
   
9 O5 d  A8 _+ u9 t1 Q4 U    FLASH_Unlock ();                                        //解锁
. `! b- x! e: S' U, m9 O" r4 w    Status = FLASH_ErasePage (IAP_ADDR);                    //擦除页2 p, m  p% N# q- K+ z8 c; D& ^
    for (i = 0; i < 256; i += 4)
! J; X( D+ U/ j    {
7 w" K5 t/ a! Y$ ?1 n& E1 z. t        //dat = Write_Buff
霹雳之火 回答时间:2014-8-31 14:25:28

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

第一篇分析flash读写,好贴,

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版