|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
FLASH擦除程序:
" i. w' R7 T$ u0 B5 ?7 h0 Q% P1 LUint16 ChipErase(void): s# M, o4 {, e: y; A
{' Y( p5 Q4 v! O& D4 R4 J! A" M
Uint16 Data;# c8 k2 q1 h* X7 [1 W
Uint32 TimeOut,i;
, N7 m9 {! V4 F/***********以下过程需要严格遵守**************************/4 @+ d: ]+ A2 e2 L) _8 Q4 x& w: _. s
*(FlashStart + 0x5555) = 0xAAAA; //需要对FLASH的0x5555单元写0xAAAA% k" k6 ` j: w- `5 o* _
*(FlashStart + 0x2AAA) = 0x5555; //需要对FLASH的0x2AAA单元写0x5555
; C0 S$ D! t: W ~' {*(FlashStart + 0x5555) = 0x8080; //随后对FLASH的0x5555单元写0x8080;
7 \: w/ V' Q/ i5 w5 U+ A, a$ \*(FlashStart + 0x5555) = 0xAAAA; //乊后对FLASH的0x5555单元写0xAAAA) L* K. |/ W# C. W' S {/ P
*(FlashStart + 0x2AAA) = 0x5555; //需要对FLASH的0x2AAA单元写0x5555 - ?. @! {9 { l- {- z4 y% C
*(FlashStart + 0x5555) = 0x1010; //需要对FLASH的0x5555单元写0x1010$ s2 D" @7 r/ m ]! y" ]
i = 0;
7 ^ M1 b+ y) h7 u2 o, mTimeOut = 0;2 }! ^/ S6 H8 \+ c9 V p
while(i<5)* a* L3 l4 D# r4 K8 R" p
{
0 x( n: M$ Y2 Q! c' oData = *(FlashStart + 0x3FFFF);
$ ]9 S; f4 a3 _) _8 W) @0 Pif (Data == 0xFFFF)
' O8 b9 U: v. _. O- E. wi++;* }6 Z1 ~( f1 \6 Y9 Y( E
else i=0;
- @; \8 ]# C/ \% Rif ( ++TimeOut>0x1000000) P- X5 S7 m8 ?! b6 a$ I
return (TimeOutErr);9 L6 i" \- Q: C7 Z# d2 m5 i, o
}
8 b' J) `" X. _4 f; v; Gfor (i=0;i<0x40000;i++): Y- Y; n4 l T1 @! ^4 u
{! y1 H( g* Y7 E+ e* C# v* ?
Data = *(FlashStart + i);
) J& m( a w; ^ Uif (Data !=0xFFFF), z: _) c* @( _+ A% X2 b5 i
return (EraseErr);
, v- `, r! }: |/ C/ G* D: P1 R}4 n1 E+ a# F1 f) m# v7 h; w9 n! T
return (EraseOK)
! H v- {; T" ?+ A+ s2 x为什么i<5,FlashStart + 0x3FFFF,++TimeOut>0x1000000 |
|