Files
@ 0ee0ed9a3b7d
Branch filter:
Location: therm/eeprom_min.c - annotation
0ee0ed9a3b7d
1.9 KiB
text/plain
Added clock startup failure check
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;
}
|