19 #define FLASH_PAGE_SIZE 255 20 #define FLASH_PAGE_BASE 0x8000000 55 flash_program_word(
FLASH_PAGE_BASE + (pageNumber<<10) + (address<<2), data);
78 for(
int i = 0; i < size; i++){
80 flash_program_word(pageNumber + (i<<2), *(data++));
88 uint32_t
FLASH_read(uint32_t pageNumber, uint32_t address){
92 return *((uint32_t*)(
FLASH_PAGE_BASE + (pageNumber<<10) + (address<<2)));
111 for(uint16_t i = 0; i < size; i ++){
113 *(container++) = *((uint32_t*)( pageNumber + (i<<2)));
122 if(pageNumber > 127){
136 *(container++) = *((uint32_t*)(pageNumber + (i<<2)));
149 if((*((uint32_t*)( pageNumber + (i<<2)))) != 0xFFFFFFFF){
160 for(uint8_t i = 0; i < 127; i++){
mcu_error FLASH_readPage(uint32_t pageNumber, uint32_t *container)
Read an entire page from flash.
void MCU_printError(mcu_error errorNum)
Print a given error number as a character stream.
#define FLASH_PAGE_SIZE
The size of each page in words, used internally.
#define FLASH_PAGE_BASE
The flash starting address, used internally.
uint8_t MCU_debugIsEnabled(void)
Checks if debug is enabled.
Error FLASH: Page number out of bounds.
uint8_t FLASH_firstEmptyPage(void)
Get the first empty page is flash.
mcu_error FLASH_writes(uint32_t pageNumber, uint32_t address, uint32_t *data, uint16_t size)
Write multiple words to flash, address incremented automatically.
uint8_t FLASH_pageEmpty(uint32_t pageNumber)
Determine if a given page is empty.
uint32_t FLASH_read(uint32_t pageNumber, uint32_t address)
Read a single word from flash memory.
mcu_error FLASH_clearPage(uint32_t pageNumber)
Clear a page (1kb) of flash.
Header file for stm32f103cb FLASH.
mcu_error FLASH_reads(uint32_t pageNumber, uint32_t address, uint32_t *container, uint16_t size)
Read multiple words from flash.
mcu_error FLASH_write(uint32_t pageNumber, uint32_t address, uint32_t data)
Write a single word to flash.
mcu_error
Error enumerators for the Debug peripheral.