|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
FLASH擦除程序:* m1 S4 s2 U+ u+ D
Uint16 ChipErase(void)0 g" p) h! r a# q, o/ C: v
{& d' E7 i2 r& A$ a4 z" P3 _2 ^+ i
Uint16 Data;
* F- F3 W+ y9 l# {* D9 ZUint32 TimeOut,i;
/ v( ?8 ~* P( K. N6 ~* i+ v/***********以下过程需要严格遵守**************************/
3 O5 k ]- W/ }*(FlashStart + 0x5555) = 0xAAAA; //需要对FLASH的0x5555单元写0xAAAA+ W5 R0 K. }; v6 |
*(FlashStart + 0x2AAA) = 0x5555; //需要对FLASH的0x2AAA单元写0x5555: o ~9 n$ [0 x* ^$ H3 V( X! t
*(FlashStart + 0x5555) = 0x8080; //随后对FLASH的0x5555单元写0x8080;! {. ~- M' G+ G' h
*(FlashStart + 0x5555) = 0xAAAA; //乊后对FLASH的0x5555单元写0xAAAA1 v M+ ], r s) ?. x) L; f3 G" m
*(FlashStart + 0x2AAA) = 0x5555; //需要对FLASH的0x2AAA单元写0x5555 + w, s3 g# k' ]' v* P
*(FlashStart + 0x5555) = 0x1010; //需要对FLASH的0x5555单元写0x1010
8 V, l( i! b9 _; b! t+ G) Ji = 0;" |) H! M, C( D; v9 ~
TimeOut = 0;
% i- T6 m% C4 L) }! a5 Vwhile(i<5)! Y6 d2 G, b; G4 a/ K
{, o) c: h1 `$ `, q" e" G6 S* t4 |
Data = *(FlashStart + 0x3FFFF);% G# Z$ B/ v3 T9 [5 w
if (Data == 0xFFFF)- |% |% G1 i. A; O. _
i++;- h) ?' m" i y( N. m# J9 j( ~+ h
else i=0;
* |3 c' V( s% q* f4 `# F+ hif ( ++TimeOut>0x1000000)
" k' f: \. b8 k2 E2 @1 wreturn (TimeOutErr);
/ w! a$ h* }- A6 w}& z& w2 l& B9 \3 O4 @/ y! O
for (i=0;i<0x40000;i++)# v" Y7 M, ?# p: v
{
, p0 \* s9 z3 P8 C pData = *(FlashStart + i);
* W+ j& Y) E4 [5 n: R, fif (Data !=0xFFFF)1 H* K4 X8 \: E! J6 K, M
return (EraseErr);
( U# f8 C0 `0 x5 x9 q}2 d2 H) f' n( S
return (EraseOK)
0 p" ]0 M4 B* h. i为什么i<5,FlashStart + 0x3FFFF,++TimeOut>0x1000000 |
|