|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
FLASH擦除程序:( i6 Z' E3 I" ?
Uint16 ChipErase(void)
" d* ]- y0 {) A: f1 M! J{" c& a* I/ z w
Uint16 Data;4 }# h; Y" m- `. `; m& _ y
Uint32 TimeOut,i;/ b, h2 J2 J" k/ E: T" N6 X3 \6 z
/***********以下过程需要严格遵守**************************/
$ |. G$ n2 V, c' }- C# ]# U*(FlashStart + 0x5555) = 0xAAAA; //需要对FLASH的0x5555单元写0xAAAA' i/ P8 \2 X5 u, ]
*(FlashStart + 0x2AAA) = 0x5555; //需要对FLASH的0x2AAA单元写0x5555
% G- ~" Q1 m4 Y f' N$ F1 M$ f*(FlashStart + 0x5555) = 0x8080; //随后对FLASH的0x5555单元写0x8080;
. ^; l4 P: E3 n*(FlashStart + 0x5555) = 0xAAAA; //乊后对FLASH的0x5555单元写0xAAAA) {: j' _; F# H* L# ]; {, A% h! u' \4 a
*(FlashStart + 0x2AAA) = 0x5555; //需要对FLASH的0x2AAA单元写0x5555 9 ]* |5 s, F8 b
*(FlashStart + 0x5555) = 0x1010; //需要对FLASH的0x5555单元写0x1010, Q9 w7 B/ I' G; j% b
i = 0;. S! {9 J W f5 p) j8 @ d, g
TimeOut = 0;
" l& m, P3 T2 O! Wwhile(i<5)5 l- C8 F; E1 s: b1 [
{
5 x k8 H; ^& M3 R% vData = *(FlashStart + 0x3FFFF);9 p5 D/ x p; t q" }
if (Data == 0xFFFF)
- m- R8 ]2 f9 ?4 v$ o8 Q I3 ~i++;& `. v i; {& g4 D) w
else i=0;: U5 I$ J! S2 C2 Z) a
if ( ++TimeOut>0x1000000)
& D5 u6 C* ~! S# j! d" V' lreturn (TimeOutErr);
3 e7 {; } m9 ~3 Q}
; O& L o3 l! k+ X0 E! Gfor (i=0;i<0x40000;i++)
" {- ?3 C2 Z4 n{
: }. M1 @, o+ \; ZData = *(FlashStart + i);" T- t7 j$ K P" z4 P8 z
if (Data !=0xFFFF)1 h _$ W7 L3 H, T4 {
return (EraseErr);" B* | z1 D0 O5 |2 y1 q
}
' ^3 P0 y" M2 [3 D& g: T) breturn (EraseOK)
5 |5 C2 Z7 B% j' ?) s+ m为什么i<5,FlashStart + 0x3FFFF,++TimeOut>0x1000000 |
|