您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ FLASH_Unlock函数代码示例

51自学网 2021-06-01 20:41:43
  C++
这篇教程C++ FLASH_Unlock函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中FLASH_Unlock函数的典型用法代码示例。如果您正苦于以下问题:C++ FLASH_Unlock函数的具体用法?C++ FLASH_Unlock怎么用?C++ FLASH_Unlock使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了FLASH_Unlock函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: conf_general_init

void conf_general_init(void) {	// First, make sure that all relevant virtual addresses are assigned for page swapping.	memset(VirtAddVarTab, 0, sizeof(VirtAddVarTab));	int ind = 0;	for (unsigned int i = 0;i < (sizeof(app_configuration) / 2);i++) {		VirtAddVarTab[ind++] = EEPROM_BASE_MCCONF + i;	}	for (unsigned int i = 0;i < (sizeof(app_configuration) / 2);i++) {		VirtAddVarTab[ind++] = EEPROM_BASE_APPCONF + i;	}	FLASH_Unlock();	EE_Init();}
开发者ID:xin198365,项目名称:bldc,代码行数:16,


示例2: Flash_SaveLastGUI

void Flash_SaveLastGUI(void){	uint8 buff[1024] = {0};  FLASH_Unlock(); 	FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_WRPERR | FLASH_FLAG_PGERR );	if(FLASH_COMPLETE != FLASH_ErasePage(STORE_LAST_GUI_PAGE_ADDR))	{    return;  }	memcpy(buff, (uint8*)&backgroud, 1024);	  Flash_WriteData(STORE_LAST_GUI_PAGE_ADDR, (uint16*)buff, 1024/2);	FLASH_Lock();}
开发者ID:wangxubo1988,项目名称:smart_tag,代码行数:16,


示例3: Flash_SaveTagState

void Flash_SaveTagState(void){	uint8 buff[64] = {0};  FLASH_Unlock(); 	FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_WRPERR | FLASH_FLAG_PGERR );	if(FLASH_COMPLETE != FLASH_ErasePage(STORE_SYS_STATE_PAGE_ADDR))	{    return;  }	memcpy(buff, (uint8*)&state_para.ackflag_set, sizeof(state_para));	  Flash_WriteData(STORE_SYS_STATE_PAGE_ADDR, (uint16*)buff, (sizeof(state_para)+1)/2);	FLASH_Lock();}
开发者ID:wangxubo1988,项目名称:smart_tag,代码行数:16,


示例4: Flash_WritePageU8

/*=====================================================================================================*/int8_t Flash_WritePageU8( uint32_t writeAddr, const uint8_t *writeData, uint32_t lens ){  int8_t status = ERROR;  uint32_t count = 0;  FLASH_Unlock();  FLASH_ClearFlag(FLASH_FLAG_EOP    | FLASH_FLAG_OPERR  | FLASH_FLAG_WRPERR |                  FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR);  do {    status = FLASH_ProgramByte(writeAddr + count, writeData[count]);  } while((++count < lens) && (status == FLASH_COMPLETE));  FLASH_Lock();  return status;}
开发者ID:KitSprout,项目名称:KDWM1000,代码行数:17,


示例5: PIOS_Flash_Internal_StartTransaction

static int32_t PIOS_Flash_Internal_StartTransaction(uintptr_t flash_id){	struct pios_internal_flash_dev * flash_dev = (struct pios_internal_flash_dev *)flash_id;	if (!PIOS_Flash_Internal_Validate(flash_dev))		return -1;#if defined(PIOS_INCLUDE_FREERTOS)	if (xSemaphoreTake(flash_dev->transaction_lock, portMAX_DELAY) != pdTRUE)		return -2;#endif	/* defined(PIOS_INCLUDE_FREERTOS) */	/* Unlock the internal flash so we can write to it */	FLASH_Unlock();	return 0;}
开发者ID:johnm1,项目名称:flyingf4_int_flash,代码行数:16,


示例6: erase_flash_page

void erase_flash_page(uint32_t page_addr){	FLASH_Status FLASHStatus = FLASH_COMPLETE;	__disable_irq();	FLASH_Unlock();	FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);		FLASHStatus = FLASH_ErasePage(page_addr);	if(FLASHStatus != FLASH_COMPLETE)		myprintf("FLASH_ErasePage Error/r/n");	FLASH_Lock();	__enable_irq();}
开发者ID:Wiznet,项目名称:WIZ550web,代码行数:16,


示例7: hal_nvm_init_sector

int hal_nvm_init_sector(HAL_NVM_HANDLE handle, unsigned long address){    int sector = get_sector(address);    int rv = HAL_NVM_E_SUCCESS;    FLASH_Unlock();    if (FLASH_EraseSector(sector, VoltageRange_3) != FLASH_COMPLETE)    {        rv = HAL_NVM_E_ERROR;    }    FLASH_Lock();    return rv;}
开发者ID:BGCX261,项目名称:zhonx2-git,代码行数:16,


示例8: clear_CardID

//----清除全部刷卡记录-----------------------------------------------------void clear_CardID(){	 char DateSt[12], TimeSt[12];	storeaddrlist.RecordCount = 0;	storeaddrlist.CountAddrOffset = 0;	timeoutaddrlist.RecordCount = 0;	timeoutaddrlist.CountAddrOffset = 0;	LastSaveTime = GetRTC(DateSt, TimeSt);///获取当前时间,秒数 //需要优化;	//清除记录区  	FLASH_Unlock();  	FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);	FLASH_ErasePage(PLACELASTID); 	FLASH_ErasePage(POINTOFSECTION);     	FLASH_Lock();}
开发者ID:fanqh,项目名称:stm32f103_RFID-cola-,代码行数:17,


示例9: WriteflashBoatInfo

/*********************************************************** * 函数名:WriteflashBoatInfo * 描述  :把activation_flag从CPU写入Flash,位置信息 * 输入  : 无 * 输出  : 无 ***********************************************************/void WriteflashBoatInfo(void) {	FLASHStatus = FLASH_COMPLETE;	MemoryProgramStatus = PASSED; 	FLASH_Unlock();	//FLASH解锁	FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);//清标志位		NbrOfPage = (EndAddr[7] - StartAddr[7]) / FLASH_PAGE_SIZE; //页面擦除子程序	FLASHStatus = FLASH_ErasePage(StartAddr[7] + (FLASH_PAGE_SIZE * NbrOfPage)); 	FlashAddress = StartAddr[7]; 	FLASHStatus = FLASH_ProgramWord(FlashAddress, boatlong);	FlashAddress = FlashAddress + 4;	FLASHStatus = FLASH_ProgramWord(FlashAddress, boatwidth);}
开发者ID:baidcwsse,项目名称:NETMARK_W100,代码行数:22,


示例10: FLASH_Config

void FLASH_Config(void){ /* Define flash programming Time*/  FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD);/*  FLASH_Unlock(FLASH_MEMTYPE_PROG);  // Wait until Flash Program area unlocked flag is set  while (FLASH_GetFlagStatus(FLASH_FLAG_PUL) == RESET)  {}*/  /* Unlock flash data eeprom memory */  FLASH_Unlock(FLASH_MEMTYPE_DATA);  /* Wait until Data EEPROM area unlocked flag is set*/  while (FLASH_GetFlagStatus(FLASH_FLAG_DUL) == RESET)  {}}
开发者ID:ivandevel,项目名称:DSS-80E,代码行数:16,


示例11: Flash_SaveTagInfo

void Flash_SaveTagInfo(void){	uint8 buff[1024] = {0};  FLASH_Unlock(); 	FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_WRPERR | FLASH_FLAG_PGERR );	if(FLASH_COMPLETE != FLASH_ErasePage(STORE_SYS_INFO_PAGE_ADDR))	{    return;  }	memcpy(buff, (uint8*)&tag_flash_info.net_flag_set, sizeof(tag_flash_info));	  Flash_WriteData(STORE_SYS_INFO_PAGE_ADDR, (uint16*)buff, (sizeof(tag_flash_info)+1)/2);	FLASH_Lock();}
开发者ID:wangxubo1988,项目名称:smart_tag,代码行数:16,


示例12: FLASH_Erase

/**----------------------------------------------------------------------------- * @brief	Effacement d'un secteur de Flash. * * @param[in]	FlashSector	Secteur a effacer. * * @return		Status	Statut de l'ecriture. */uint8_t FLASH_Erase(uint8_t FlashSector){	uint32_t FLASH_Sector;	FLASH_Status Status;	// Effacement du secteur	switch (FlashSector)	{		case 0:		FLASH_Sector = FLASH_Sector_0;	break;		case 1:		FLASH_Sector = FLASH_Sector_1;	break;		case 2:		FLASH_Sector = FLASH_Sector_2;	break;		case 3:		FLASH_Sector = FLASH_Sector_3;	break;		case 4:		FLASH_Sector = FLASH_Sector_4;	break;		case 5:		FLASH_Sector = FLASH_Sector_5;	break;		case 6:		FLASH_Sector = FLASH_Sector_6;	break;		case 7:		FLASH_Sector = FLASH_Sector_7;	break;		case 8:		FLASH_Sector = FLASH_Sector_8;	break;		case 9:		FLASH_Sector = FLASH_Sector_9;	break;		case 10:	FLASH_Sector = FLASH_Sector_10;	break;		case 11:	FLASH_Sector = FLASH_Sector_11;	break;		case 0xFF:	FLASH_Sector = 0xFF;			break;		default:	return Status_KO;				break;	}	// Desactivation des interruptions	__disable_irq();	// Deverrouillage de la flash	FLASH_Unlock();	if (FLASH_Sector == 0xFF)		Status = FLASH_EraseAllSectors(VoltageRange_3);	else		Status = FLASH_EraseSector(FLASH_Sector, VoltageRange_3);	// Verrouillage de la flash	FLASH_Lock();	// ReActivation des interruptions	__enable_irq();	if (Status == FLASH_COMPLETE)		return Status_OK;	return Status_KO;}
开发者ID:jdaheron,项目名称:BLDR,代码行数:54,


示例13: bsp_MCU_Write

u8* bsp_MCU_Write(u8* writebuffer,u8 blockid,u16 writelength){			u8 status=0;	u16 index=0;	SleepTime=0;	__set_PRIMASK(1);  	memcpy(MCU_ROM_Write,(u8*)ADDR_FLASH_SECTOR_7,1024+16); //在擦除之前,先把数据读出来放在内存buffer	__set_PRIMASK(0);  	  if(blockid==1)	{		memcpy(MCU_ROM_Write,writebuffer,writelength); //将512byte数据写入第一个block区域	}	if(blockid==2)	{		memcpy(MCU_ROM_Write+512,writebuffer,writelength); //将512byte数据写入第二个block区域	}		FLASH_Unlock();									//解锁   FLASH_DataCacheCmd(DISABLE);//FLASH擦除期间,必须禁止数据缓存 	FLASH_ClearFlag(FLASH_FLAG_EOP|FLASH_FLAG_OPERR|FLASH_FLAG_WRPERR|  FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR|FLASH_FLAG_PGSERR);	status=FLASH_EraseSector(FLASH_Sector_7 ,VoltageRange_3);//VCC=2.7~3.6V之间!!	if(status==FLASH_COMPLETE)	{   __set_PRIMASK(1);  		  for(index=0;index<(1024+16);index++)		{			status=FLASH_ProgramByte(ADDR_FLASH_SECTOR_7+index,MCU_ROM_Write[index]);  //SysID		}   __set_PRIMASK(0);  	}	  FLASH_DataCacheCmd(ENABLE);	//FLASH擦除结束,开启数据缓存	FLASH_Lock();//上锁		if(status==FLASH_COMPLETE)	{		MCU_WriteStatus=0;	}	else	{		MCU_WriteStatus=status;	}	return &MCU_WriteStatus;		}
开发者ID:CaptainJe,项目名称:BlueShiled,代码行数:47,


示例14: mal_flash_erase_page

mal_error_e mal_flash_erase_page(uint32_t page) {	// Unlock flash registers	FLASH_Unlock();	// Clear pending flags	FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPERR);	// Erase page	FLASH_Status result;	uint32_t offset = mal_flash_get_page_size(page) * page;	result = FLASH_ErasePage(FLASH_START_ADDRESS + offset);	// Lock flash registers	FLASH_Lock();	// Return result	if (FLASH_COMPLETE != result) {		return MAL_ERROR_MEMORY;	}	return MAL_ERROR_OK;}
开发者ID:MAL-Organization,项目名称:MAL,代码行数:17,


示例15: IAC_Init

void IAC_Init(void){	 delay_init(72);	 MCO_INIT();	 Nvic_Init();    LED_GPIO_Config();	   I2C_INIT();	 delay(0XFFF);	 TIM3_Init(2500);	 usart1_config();	 ADC1_Init();		 NRF24L01_Init();   Moto_Init();		 LED_SHOW();	 FLASH_Unlock();	 EE_Init();}
开发者ID:zjh3123629,项目名称:Air-Nano,代码行数:17,


示例16: Data_Save

void Data_Save(void){	uint8_t count;	uint8_t i,flag;	LED4_on;	flash_save[0].i32_data[0] = Gyro_Float;	flash_save[0].i32_data[1] = 0x00000000;	flash_save[1].f64_data = Gyro_Convert1;	flash_save[2].f64_data = Gyro_Convert2;	flash_save[3].f64_data = Encoders[0].Convert1;	flash_save[4].f64_data = Encoders[0].Convert2;	flash_save[5].f64_data = Encoders[0].Radius;	flash_save[6].f64_data = Encoders[0].radian;	flash_save[7].f64_data = Encoders[1].Convert1;	flash_save[8].f64_data = Encoders[1].Convert2;	flash_save[9].f64_data = Encoders[1].Radius;	flash_save[10].f64_data = Encoders[1].radian;		FLASH_Unlock();	while(FLASH_GetFlagStatus(FLASH_FLAG_BSY)==1);		FLASH_ErasePage(PAGE_ADDRESS);	for(count=0;count < SAVEDATA_NUM;count++)	{		for(i=0;i<4;i++)		{			flag = 0;			while(flag==0)			{				FLASH_ProgramHalfWord((PAGE_ADDRESS +count*8+i*2),flash_save[count].u16_data[i]);  //flash  为一个字节存储,16位数据必须地址加2				if(flashread((PAGE_ADDRESS +count*8+i*2)) == (flash_save[count].u16_data[i]))				{					flag = 1;					LED2_off;				}				else					LED2_on;			}		}	}	while(FLASH_GetFlagStatus(FLASH_FLAG_BSY)==1);	FLASH_Lock();		LED4_off;}
开发者ID:yihui-he,项目名称:Rotary-encoder-System,代码行数:46,


示例17: FlashErase

/******************************************************************************** Function Name  : EraseFLASH* Description    : Brisanje flash bloka* Input          :* Output         :* Return         :*******************************************************************************/int					FlashErase(int n) {int					i;						if(n == _BOOT_SECTOR) 							return(-1);						FLASH_Unlock();#if defined (STM32F10X_HD)						FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);												do i=FLASH_ErasePage(n); while(i==FLASH_BUSY);#elif defined  (STM32F2XX)						FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR|FLASH_FLAG_PGSERR);							do i=FLASH_EraseSector(n, VoltageRange_3);	while(i==FLASH_BUSY);#endif									if(i==FLASH_COMPLETE)							return(0);						else							return(i);}
开发者ID:yallawalla,项目名称:stm32,代码行数:24,


示例18: Tekdaqc_SetCalibrationMode

/** * Enter calibration mode. NOTE: Calling this method will erase the calibration table. * * @param none * @retval FLASH_Status The status of the FLASH operations. Returns FLASH_COMPLETE on success. */FLASH_Status Tekdaqc_SetCalibrationMode(void) {	/* Enable the flash control register access */	FLASH_Unlock();	/* Clear pending flags (if any) */	FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR);	FLASH_Status status = FLASH_COMPLETE;	/* FLASH_OB_Unlock(); */	/* Disable write protection for this sector */	/*FLASH_OB_WRPConfig(CALIBRATION_WPSECTOR, DISABLE);	 FLASH_OB_Launch(); */	/* Erase the calibration sector */	status = FLASH_EraseSector(CALIBRATION_SECTOR, FLASH_VOLTAGE_RANGE);	if (status != FLASH_COMPLETE) {		return status;	}	/* Program the user Flash area word by word area defined by FLASH_USER_START_ADDR and FLASH_USER_END_ADDR */	uint32_t Address = ADDR_CALIBRATION_BASE;	while (Address < ADDR_CALIBRATION_END) {		status = FLASH_ProgramWord(Address, CALIBRATION_ERASE_DATA);		if (status == FLASH_COMPLETE) {			Address = Address + 4;		} else {			return status;		}	}	/* Enable write protection for this sector */	/*FLASH_OB_WRPConfig(CALIBRATION_WPSECTOR, ENABLE);	 FLASH_OB_Launch();*/	/* FLASH_OB_Lock(); */	/* Disable the flash control register access */	CalibrationModeEnabled = true;	return status;}
开发者ID:Tenkiv,项目名称:Tekdaqc-Firmware-Depricated,代码行数:51,


示例19: WriteflashBoatnum

/*********************************************************** * 函数名:WriteflashBoatnum * 描述  :把船名信息从CUP写入Flash * 输入  : 无 * 输出  : 无 ***********************************************************/void WriteflashBoatnum(void) {	u8 i;	FLASHStatus = FLASH_COMPLETE;	MemoryProgramStatus = PASSED;	FLASH_Unlock();	//FLASH解锁	FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);//清标志位		NbrOfPage = (EndAddr[0] - StartAddr[0]) / FLASH_PAGE_SIZE;//页面擦除子程序	FLASHStatus = FLASH_ErasePage(StartAddr[0] + (FLASH_PAGE_SIZE * NbrOfPage));	FlashAddress = StartAddr[0];	for(i=0;i<4;i++)	{		FLASHStatus = FLASH_ProgramWord(FlashAddress, ((boatnum[i*4+3]<<24) + (boatnum[i*4+2]<<16) + (boatnum[i*4+1]<<8) + boatnum[i*4]));		FlashAddress = FlashAddress + 4;	}}
开发者ID:baidcwsse,项目名称:NETMARK_W100,代码行数:24,


示例20: STMFLASH_WriteOnePage

void STMFLASH_WriteOnePage(u32 WriteAddr,u16 *pBuffer,u16 NumToWrite)	{	u32 secpos;	   	u32 offaddr;   	if(WriteAddr<STM32_FLASH_BASE||(WriteAddr>=(STM32_FLASH_BASE+1024*STM32_FLASH_SIZE)))		{		return;		}	FLASH_Unlock();							offaddr=WriteAddr-STM32_FLASH_BASE;			secpos=offaddr/STM32_SECTOR_SIZE;					FLASH_ErasePage(secpos*STM32_SECTOR_SIZE+STM32_FLASH_BASE);	STMFLASH_Write_NoCheck(WriteAddr,pBuffer,NumToWrite);		   		FLASH_Lock();}
开发者ID:yanke928,项目名称:Kanade,代码行数:18,


示例21: WriteflashMUID

/*********************************************************** * 函数名:WriteflashMUID * 描述  :把从ChipUniqueID_Flash写入Flash,用于程序激活 * 输入  : 无 * 输出  : 无 ***********************************************************/void WriteflashMUID(void){	u8 i;	FLASHStatus = FLASH_COMPLETE;	MemoryProgramStatus = PASSED; 	FLASH_Unlock();	//FLASH解锁	FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);//清标志位	NbrOfPage = (EndAddr[5] - StartAddr[5]) / FLASH_PAGE_SIZE;//页面擦除子程序	FLASHStatus = FLASH_ErasePage(StartAddr[5] + (FLASH_PAGE_SIZE * NbrOfPage)); 	FlashAddress = StartAddr[5]; 	for(i=0;i<=2;i++)	{		FLASHStatus = FLASH_ProgramWord(FlashAddress,ChipUniqueID_Flash[i]);  //将UID写入flash		FlashAddress += 4;	}	}
开发者ID:baidcwsse,项目名称:NETMARK_W100,代码行数:24,


示例22: flashErase

static int flashErase(uint32_t sector){	FLASH_Unlock();	FLASH_ClearFlag(			FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR					| FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR);	/* Device voltage range supposed to be [2.7V to 3.6V], the operation will	 be done by word */	if (FLASH_EraseSector(sector, VoltageRange_3) != FLASH_COMPLETE)	{		FLASH_Lock();		return -1;	}	FLASH_Lock();	return 0;}
开发者ID:kubanecxxx,项目名称:mirek_pedalsrot,代码行数:18,


示例23: STMFLASH_Write

void STMFLASH_Write(u32 WriteAddr,u16 *pBuffer,u16 NumToWrite)	{	u32 secpos;	   //扇区地址	u16 secoff;	   //扇区内偏移地址(16位字计算)	u16 secremain; //扇区内剩余地址(16位字计算)	    	u16 i;    	u32 offaddr;   //去掉0X08000000后的地址	if(WriteAddr<STM32_FLASH_BASE||(WriteAddr>=(STM32_FLASH_BASE+1024*STM32_FLASH_SIZE)))return;//非法地址	FLASH_Unlock();						//解锁	offaddr=WriteAddr-STM32_FLASH_BASE;		//实际偏移地址.	secpos=offaddr/STM_SECTOR_SIZE;			//扇区地址  0~127 for STM32F103RBT6	secoff=(offaddr%STM_SECTOR_SIZE)/2;		//在扇区内的偏移(2个字节为基本单位.)	secremain=STM_SECTOR_SIZE/2-secoff;		//扇区剩余空间大小   	if(NumToWrite<=secremain)secremain=NumToWrite;//不大于该扇区范围	while(1) 	{			STMFLASH_Read(secpos*STM_SECTOR_SIZE+STM32_FLASH_BASE,STMFLASH_BUF,STM_SECTOR_SIZE/2);//读出整个扇区的内容		for(i=0;i<secremain;i++)//校验数据		{			if(STMFLASH_BUF[secoff+i]!=0XFFFF)break;//需要擦除  	  		}		if(i<secremain)//需要擦除		{			FLASH_ErasePage(secpos*STM_SECTOR_SIZE+STM32_FLASH_BASE);//擦除这个扇区			for(i=0;i<secremain;i++)//复制			{				STMFLASH_BUF[i+secoff]=pBuffer[i];	  			}			STMFLASH_Write_NoCheck(secpos*STM_SECTOR_SIZE+STM32_FLASH_BASE,STMFLASH_BUF,STM_SECTOR_SIZE/2);//写入整个扇区  		}else STMFLASH_Write_NoCheck(WriteAddr,pBuffer,secremain);//写已经擦除了的,直接写入扇区剩余区间. 				   		if(NumToWrite==secremain)break;//写入结束了		else//写入未结束		{			secpos++;				//扇区地址增1			secoff=0;				//偏移位置为0 	 		   	pBuffer+=secremain;  	//指针偏移			WriteAddr+=secremain;	//写地址偏移	   		   	NumToWrite-=secremain;	//字节(16位)数递减			if(NumToWrite>(STM_SECTOR_SIZE/2))secremain=STM_SECTOR_SIZE/2;//下一个扇区还是写不完			else secremain=NumToWrite;//下一个扇区可以写完了		}	 	};		FLASH_Lock();//上锁}
开发者ID:Niyunfeng,项目名称:stm32f103_bootloader,代码行数:44,


示例24: EEWriteStruct

////Addr 写入FLASH的首地址uint32_t EEWriteStruct(void* pBuf,uint32_t cLen,uint32_t iAddr)	 {	uint8_t cResult =0;	u32 ProtectedPages;			u32 Addr = 0;		u32 i,j,k=0;	u32 iBufStart,iBaseAddr,cBufCnt;	cLen>>=1;	Addr=STARTADDR;	Addr=iAddr;	Addr+=STARTADDR;	iBaseAddr  		= Addr%(SECTOR_SIZE<<1)+STARTADDR;                  //计算缓冲区首地址	 	iBufStart  		= iAddr/(SECTOR_SIZE<<1)*(SECTOR_SIZE<<1);	cBufCnt   	= (iBufStart+cLen)/SECTOR_SIZE+1;   //要写入的缓冲区次数	 	for(j=0;j<cBufCnt;j++)	{				//全部锁定则退出编程		Flash_ProtectMode(&ProtectedPages );  //		if(0==ProtectedPages)			break;		//读出一个扇区到保存缓冲区		for(i=0;i<SECTOR_SIZE;i++)			PrintBuf[i] = EEHalfWord_Read(iBaseAddr+SECTOR_SIZE*j+(i<<1));		//将要保存的数据写入到缓冲区   							for(i=(j==0?iBufStart:0);i<SECTOR_SIZE;i++,k++) {			PrintBuf[i] = *((vu16*)pBuf+k);				//			if(--cLen==0){  			   //__nop();			   break;}	 		}					    								    		//擦除Flash区 		FLASH_Unlock();		EESector_Erase(Addr+j*SECTOR_SIZE);								//擦除扇区		//写入内容;		for(i=0;i<SECTOR_SIZE;i++)		{			 EEHalfWord_Write(iBaseAddr+SECTOR_SIZE*j+(i<<1),PrintBuf[i]);   		}	   			FLASH_Lock();	}			   		   	return cResult;}
开发者ID:eseawind,项目名称:Gyfxy,代码行数:45,


示例25: TIM3_IRQHandler

void TIM3_IRQHandler(void){  __IO uint8_t data;  __IO uint8_t *addr;  if (TIM_GetITStatus(TIM3, TIM_IT_CC1) == RESET)    return;  TIM_ClearITPendingBit(TIM3, TIM_IT_CC1);  if (mode == 0) // Read cycle    {      STM_EVAL_LEDToggle(LED4);      addr = (__IO uint8_t *)(base_addr + counter);      if (*addr)        STM_EVAL_LEDOn(LED6);      else        STM_EVAL_LEDOff(LED6);    }  else // Write cycle    {      if (counter == 0) // Flash address before programming        {          FLASH_Unlock();          FLASH_ClearFlag(FLASH_FLAG_EOP    | FLASH_FLAG_OPERR |                          FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR |                          FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR);           FLASH_EraseSector(sector, VoltageRange_3);        }      STM_EVAL_LEDToggle(LED5);      FLASH_ProgramByte(base_addr + counter,                        GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0));    }  counter++;  if (counter == 50)    {      mode++;      counter = 0;    }  if (mode > 1)    {      TIM_Cmd(TIM3, DISABLE);      STM_EVAL_LEDOn(LED3);    }}
开发者ID:tadeboro,项目名称:rs,代码行数:44,


示例26: flashErase

int flashErase(uint32_t startAddr, uint32_t len) {    FLASH_Status status;    unsigned int retries;    int ret;    uint32_t startSector, endSector;    uint32_t i;    if (startAddr == 0)        startAddr = FLASH_START_ADDR;    FLASH_Unlock();    // Clear pending flags (if any)    FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR);    ret = 1;    startSector = GetSector(startAddr);    endSector = GetSector(startAddr + len*4);    i = startSector;    while (i <= endSector) {        retries = 0;        do {            // Device voltage range supposed to be [2.7V to 3.6V], the operation will be done by word            status = FLASH_EraseSector(i, VoltageRange_3);            retries++;        } while (status != FLASH_COMPLETE && retries < FLASH_RETRIES);        if (retries == FLASH_RETRIES) {            ret = 0;            break;        }        if (i == FLASH_Sector_11)            i += 40;        else            i += 8;    }    FLASH_Lock();    return ret;}
开发者ID:jiezhi320,项目名称:autoquadfc,代码行数:44,


示例27: FlashProgram32

/******************************************************************************** Function Name  : FlashProgram32* Description    : programiranje  ali verificiranje 32 bitov, klièe  driver v knji
C++ FLA_COMPLEX_PTR函数代码示例
C++ FLASH_SetLatency函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。