金牌会员
 
- 积分
- 1147
- 金钱
- 1147
- 注册时间
- 2015-11-29
- 在线时间
- 148 小时
|
10金钱
#include "stm32f10x_it.h"
#include "stm32f10x.h"
#include "globle.h"
#include "stm32f10x_conf.h"
//#include "usart.h"
#include "adc.h"
#include "Driver.h"
#include "Ex_Control.h"
#include "Flashdata.h"
uint16_t writedata[200]={0};
uint16_t readdata[200]={0};
//Threshold Laser_Threshold;
Adapatpara Laser_Adapatpara;
Adapatpara1 Laser_Adapatpara1;
biaoding_value biaoding_current;
void writeflash(uint32_t data1,uint32_t data2)
{
// uint32_t EraseCounter = 0x00; //记录要擦除多少页
uint32_t Address = 0x00; //记录写入的地址
uint16_t Data = 0; //记录写入的数据
// uint32_t NbrOfPage = 0x00; //记录写入多少页
uint8_t i=0;
if((data1==WRITE_START_ADDR)&&(data2==WRITE_END_ADDR))
{
FLASH_Status FLASHStatus = FLASH_COMPLETE; //记录每次擦除的结果
/* 解锁 */
FLASH_Unlock();
/* 清空所有标志位 */
FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);
/* 按页擦除*/
FLASHStatus=FLASH_ErasePage(WRITE_START_ADDR); //擦除1页
// for(EraseCounter = 0; (EraseCounter < NbrOfPage) && (FLASHStatus == FLASH_COMPLETE); EraseCounter++)
// {
// FLASHStatus = FLASH_ErasePage(WRITE_START_ADDR + (FLASH_PAGE_SIZE * EraseCounter));
//
// }
/* 向内部FLASH写入数据 */
if(FLASHStatus == FLASH_COMPLETE) //擦除成功
{
Address = WRITE_START_ADDR;
while((Address < WRITE_END_ADDR) && (FLASHStatus == FLASH_COMPLETE))
{
Data=writedata[i];
FLASHStatus = FLASH_ProgramHalfWord(Address, Data);
Address = Address + 2;
i++;
}
}
FLASH_Lock();
}
}
void readflash(void)
{
uint32_t Address = 0; //读取的地址
uint8_t i=0x00;
Address = WRITE_START_ADDR;
for(i=0;i<200;i++)
{
readdata[i]=*(__IO uint16_t*)Address;
Address=Address+2;
}
}
void Adapat_Para_Updata(void)
{
uint8_t i=0;
writedata[0]=0xA5A5;
for(i=0;i<200;i++)
{
writedata[i]=i;
}
writeflash(WRITE_START_ADDR,WRITE_END_ADDR);
}
偶尔出现数据从readdata[85]到readdata[120]丢失。
|
|