libopencm3
A free/libre/open-source firmware library for various ARM Cortex-M3 microcontrollers.
flash_common_l01.h File Reference
Include dependency graph for flash_common_l01.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define FLASH_ACR   MMIO32(FLASH_MEM_INTERFACE_BASE + 0x00)
 
#define FLASH_PECR   MMIO32(FLASH_MEM_INTERFACE_BASE + 0x04)
 
#define FLASH_PDKEYR   MMIO32(FLASH_MEM_INTERFACE_BASE + 0x08)
 
#define FLASH_PEKEYR   MMIO32(FLASH_MEM_INTERFACE_BASE + 0x0C)
 
#define FLASH_PRGKEYR   MMIO32(FLASH_MEM_INTERFACE_BASE + 0x10)
 
#define FLASH_OPTKEYR   MMIO32(FLASH_MEM_INTERFACE_BASE + 0x14)
 
#define FLASH_SR   MMIO32(FLASH_MEM_INTERFACE_BASE + 0x18)
 
#define FLASH_OBR   MMIO32(FLASH_MEM_INTERFACE_BASE + 0x1c)
 
#define FLASH_WRPR1   MMIO32(FLASH_MEM_INTERFACE_BASE + 0x20)
 
#define FLASH_WRPR2   MMIO32(FLASH_MEM_INTERFACE_BASE + 0x80)
 
#define FLASH_ACR_RUNPD   (1 << 4)
 
#define FLASH_ACR_SLEEPPD   (1 << 3)
 
#define FLASH_ACR_PRFTEN   (1 << 1)
 
#define FLASH_ACR_LATENCY_SHIFT   0
 
#define FLASH_ACR_LATENCY_MASK   1
 
#define FLASH_ACR_LATENCY_0WS   0x00
 
#define FLASH_ACR_LATENCY_1WS   0x01
 
#define FLASH_PECR_OBL_LAUNCH   (1 << 18)
 
#define FLASH_PECR_ERRIE   (1 << 17)
 
#define FLASH_PECR_EOPIE   (1 << 16)
 
#define FLASH_PECR_PARALLBANK   (1 << 15)
 
#define FLASH_PECR_FPRG   (1 << 10)
 
#define FLASH_PECR_ERASE   (1 << 9)
 
#define FLASH_PECR_FTDW   (1 << 8)
 
#define FLASH_PECR_DATA   (1 << 4)
 
#define FLASH_PECR_PROG   (1 << 3)
 
#define FLASH_PECR_OPTLOCK   (1 << 2)
 
#define FLASH_PECR_PRGLOCK   (1 << 1)
 
#define FLASH_PECR_PELOCK   (1 << 0)
 
#define FLASH_PDKEYR_PDKEY1   ((uint32_t)0x04152637)
 
#define FLASH_PDKEYR_PDKEY2   ((uint32_t)0xFAFBFCFD)
 
#define FLASH_PEKEYR_PEKEY1   ((uint32_t)0x89ABCDEF)
 
#define FLASH_PEKEYR_PEKEY2   ((uint32_t)0x02030405)
 
#define FLASH_PRGKEYR_PRGKEY1   ((uint32_t)0x8C9DAEBF)
 
#define FLASH_PRGKEYR_PRGKEY2   ((uint32_t)0x13141516)
 
#define FLASH_OPTKEYR_KEY1   ((uint32_t)0xFBEAD9C8)
 
#define FLASH_OPTKEYR_KEY2   ((uint32_t)0x24252627)
 
#define FLASH_SR_OPTVERR   (1 << 11)
 
#define FLASH_SR_SIZEERR   (1 << 10)
 
#define FLASH_SR_PGAERR   (1 << 9)
 
#define FLASH_SR_WRPERR   (1 << 8)
 
#define FLASH_SR_READY   (1 << 3)
 
#define FLASH_SR_ENDHV   (1 << 2)
 
#define FLASH_SR_EOP   (1 << 1)
 
#define FLASH_SR_BSY   (1 << 0)
 
#define FLASH_OBR_BFB2   (1 << 23)
 
#define FLASH_OBR_NRST_STDBY   (1 << 22)
 
#define FLASH_OBR_NRST_STOP   (1 << 21)
 
#define FLASH_OBR_IWDG_SW   (1 << 20)
 
#define FLASH_OBR_BOR_OFF   (0x0 << 16)
 
#define FLASH_OBR_BOR_LEVEL_1   (0x8 << 16)
 
#define FLASH_OBR_BOR_LEVEL_2   (0x9 << 16)
 
#define FLASH_OBR_BOR_LEVEL_3   (0xa << 16)
 
#define FLASH_OBR_BOR_LEVEL_4   (0xb << 16)
 
#define FLASH_OBR_BOR_LEVEL_5   (0xc << 16)
 
#define FLASH_OBR_RDPRT_LEVEL_0   (0xaa)
 
#define FLASH_OBR_RDPRT_LEVEL_1   (0x00)
 
#define FLASH_OBR_RDPRT_LEVEL_2   (0xcc)
 

Functions

void flash_unlock_pecr (void)
 Unlock primary access to the flash control/erase block You must call this before using any of the low level routines yourself. More...
 
void flash_lock_pecr (void)
 
void flash_unlock_progmem (void)
 Unlock program memory itself. More...
 
void flash_lock_progmem (void)
 
void flash_lock_option_bytes (void)
 
void flash_unlock_acr (void)
 Unlock RUN_PD bit from FLASH_ACR register. More...
 
void flash_erase_page (uint32_t page_address)
 Erase a page in flash. More...
 
void flash_program_half_page (uint32_t *dst, void *buf)
 Write a half page from buf to dst. More...
 
void eeprom_program_word (uint32_t address, uint32_t data)
 Write a word to eeprom. More...
 
void eeprom_program_words (uint32_t address, uint32_t *data, int length_in_words)
 Write a block of words to eeprom. More...