|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
FLASH擦除程序:! |4 K7 ] y. |! M
Uint16 ChipErase(void)
. v; j) D# ^7 |# |5 @- @{# f. ^6 t2 e* ~' e4 M' V- L
Uint16 Data;
% @; f; L4 M) [$ qUint32 TimeOut,i;
8 e' @$ r" o& F" i. b- h4 `/***********以下过程需要严格遵守**************************/
& ~' d7 z/ Q' C( o' g*(FlashStart + 0x5555) = 0xAAAA; //需要对FLASH的0x5555单元写0xAAAA
+ \. w+ ~& S% Z: i |" L*(FlashStart + 0x2AAA) = 0x5555; //需要对FLASH的0x2AAA单元写0x5555* u) D! i; E: y
*(FlashStart + 0x5555) = 0x8080; //随后对FLASH的0x5555单元写0x8080;
% R* }& t% g% U. V( {. b9 g*(FlashStart + 0x5555) = 0xAAAA; //乊后对FLASH的0x5555单元写0xAAAA$ c/ }1 h8 i( u9 {1 k3 b2 `2 o
*(FlashStart + 0x2AAA) = 0x5555; //需要对FLASH的0x2AAA单元写0x5555
& z6 e" y8 j& }4 `8 s1 s*(FlashStart + 0x5555) = 0x1010; //需要对FLASH的0x5555单元写0x1010' E$ ]3 O8 B( F8 ?3 H$ R2 A& `
i = 0;7 Q7 n* n! Q8 L* p4 U; H$ Q
TimeOut = 0;
! ]& I' c1 _1 P% W3 Ywhile(i<5)( Y4 T7 D1 g, b# v$ v; a1 @
{
2 `" o/ r1 ~1 f W) f; @4 a {" \Data = *(FlashStart + 0x3FFFF);
, a# @- X; M, t# }5 [2 C: Lif (Data == 0xFFFF)
3 I r( r3 Y6 \ @1 S0 K# [i++;! c& E2 M4 f+ v/ T. S$ J
else i=0;7 x+ a- g1 r1 J4 R
if ( ++TimeOut>0x1000000)
2 H' _( s9 J) J5 rreturn (TimeOutErr);
6 p9 p7 b5 `" Y" y2 M) v* ]}/ ^4 c$ U0 b. U: q# |
for (i=0;i<0x40000;i++), g' E$ L# {- R
{
% B8 n4 {) G/ A* R' |9 n7 EData = *(FlashStart + i);2 K! K3 l+ |$ u4 x
if (Data !=0xFFFF)
6 G$ S9 @9 Z' r; w) T* zreturn (EraseErr);0 W3 P4 B, e- s* Z! _
}
# L9 P/ X, s+ U: Yreturn (EraseOK)5 w" e O" J6 @3 {0 Q' |# R
为什么i<5,FlashStart + 0x3FFFF,++TimeOut>0x1000000 |
|