新手入门
- 积分
- 8
- 金钱
- 8
- 注册时间
- 2017-6-20
- 在线时间
- 2 小时
|

楼主 |
发表于 2017-6-20 21:15:14
|
显示全部楼层
void STMFLASH_Write(u32 WriteAddr,u32 *pBuffer,u32 NumToWrite) { FLASH_Status status = FLASH_COMPLETE; u32 addrx=0; u32 endaddr=0; if(WriteAddr<STM32_FLASH_BASE||WriteAddr%4)return; //·Ç·¨μØÖ· FLASH_Unlock(); //½aËø FLASH_DataCacheCmd(DISABLE);//FLASH2á3yÆú¼ä,±ØDë½ûÖ1êy¾Y»o′æ **** addrx=WriteAddr; //D′èëμÄÆeê¼μØÖ· endaddr=WriteAddr+NumToWrite*4; //D′èëμĽáêøμØÖ· /*if(addrx<0X1FFF0000) //Ö»óDÖ÷′æ′¢Çø,2ÅDèòaÖ′DD2á3y2ù×÷!! μ¼ÖÂ′íÎó¡£ĿǰÏèÆá±Î { while(addrx<endaddr) //é¨Çåò»ÇDÕϰ-.(¶Ô·ÇFFFFFFFFμÄμØ·½,Ïè2á3y) { if(STMFLASH_ReadWord(addrx)!=0XFFFFFFFF)//óD·Ç0XFFFFFFFFμÄμØ·½,òa2á3yÕa¸öéèÇø { status=FLASH_EraseSector(STMFLASH_GetFlashSector(addrx),VoltageRange_3);//VCC=2.7~3.6VÖ®¼ä!! if(status!=FLASH_COMPLETE)break; //·¢éú′íÎóáË }else addrx+=4; } }*/ if(status==FLASH_COMPLETE) { while(WriteAddr<endaddr)//D′êy¾Y { if(FLASH_ProgramWord(WriteAddr,*pBuffer)!=FLASH_COMPLETE)//D′èëêy¾Y { break; //D′èëòì3£ } FLASH_ProgramWord(WriteAddr,*pBuffer); delay_ms(10); WriteAddr+=4; pBuffer++; } } FLASH_DataCacheCmd(ENABLE); //FLASH2á3y½áêø,¿aÆôêy¾Y»o′æ FLASH_Lock();//éÏËø } |
|