Files
@ 05e06a6f3c9d
Branch filter:
Location: therm/eeprom_min.c - annotation
05e06a6f3c9d
1.9 KiB
text/plain
Erase numbers between updates
109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 109bc69daf49 | #include "stm32l100c_discovery.h"
void Minimal_EEPROM_Unlock(void)
{
if((FLASH->PECR & FLASH_PECR_PELOCK) != RESET)
{
/* Unlocking the Data memory and FLASH_PECR register access*/
FLASH->PEKEYR = FLASH_PEKEY1;
FLASH->PEKEYR = FLASH_PEKEY2;
}
}
void Minimal_EEPROM_Lock(void)
{
/* Set the PELOCK Bit to lock the data memory and FLASH_PECR register access */
FLASH->PECR |= FLASH_PECR_PELOCK;
}
FLASH_Status Minimal_FLASH_GetStatus(void)
{
FLASH_Status FLASHstatus = FLASH_COMPLETE;
if((FLASH->SR & FLASH_FLAG_BSY) == FLASH_FLAG_BSY)
{
FLASHstatus = FLASH_BUSY;
}
else
{
if((FLASH->SR & (uint32_t)FLASH_FLAG_WRPERR)!= (uint32_t)0x00)
{
FLASHstatus = FLASH_ERROR_WRP;
}
else
{
if((FLASH->SR & (uint32_t)0x1E00) != (uint32_t)0x00)
{
FLASHstatus = FLASH_ERROR_PROGRAM;
}
else
{
FLASHstatus = FLASH_COMPLETE;
}
}
}
/* Return the FLASH Status */
return FLASHstatus;
}
FLASH_Status Minimal_FLASH_WaitForLastOperation(uint32_t Timeout)
{
__IO FLASH_Status status = FLASH_COMPLETE;
/* Check for the FLASH Status */
status = Minimal_FLASH_GetStatus();
/* Wait for a FLASH operation to complete or a TIMEOUT to occur */
while((status == FLASH_BUSY) && (Timeout != 0x00))
{
status = Minimal_FLASH_GetStatus();
Timeout--;
}
if(Timeout == 0x00 )
{
status = FLASH_TIMEOUT;
}
/* Return the operation status */
return status;
}
void Minimal_EEPROM_ProgramWord(uint32_t Address, uint32_t Data)
{
// Wait for last operation to be completed
FLASH_Status status = FLASH_COMPLETE;
status = Minimal_FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
if(status == FLASH_COMPLETE)
{
*(__IO uint32_t *)Address = Data;
// Wait for last operation to be completed
status = Minimal_FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT);
}
// Return the Write Status
return status;
}
|