summaryrefslogtreecommitdiff
path: root/ports/stm32/flash.c
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2018-05-28 18:10:53 +1000
committerDamien George <damien.p.george@gmail.com>2018-05-28 21:49:49 +1000
commitea7e747979c2f27eb90f9a6ba292c500eb288dd4 (patch)
tree550e0bae6c82a8b156e14de70f464649bf474725 /ports/stm32/flash.c
parent4a7d157a5b8aef4f4f433b3b1db01e8007008c9d (diff)
stm32: Add support for STM32F0 MCUs.
Diffstat (limited to 'ports/stm32/flash.c')
-rw-r--r--ports/stm32/flash.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/ports/stm32/flash.c b/ports/stm32/flash.c
index bc5b3c60c..d3a568858 100644
--- a/ports/stm32/flash.c
+++ b/ports/stm32/flash.c
@@ -34,7 +34,13 @@ typedef struct {
uint32_t sector_count;
} flash_layout_t;
-#if defined(STM32F4)
+#if defined(STM32F0)
+
+static const flash_layout_t flash_layout[] = {
+ { FLASH_BASE, FLASH_PAGE_SIZE, (FLASH_BANK1_END + 1 - FLASH_BASE) / FLASH_PAGE_SIZE },
+};
+
+#elif defined(STM32F4)
static const flash_layout_t flash_layout[] = {
{ 0x08000000, 0x04000, 4 },
@@ -153,7 +159,12 @@ void flash_erase(uint32_t flash_dest, uint32_t num_word32) {
FLASH_EraseInitTypeDef EraseInitStruct;
- #if defined(STM32L4)
+ #if defined(STM32F0)
+ __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_WRPERR | FLASH_FLAG_PGERR);
+ EraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES;
+ EraseInitStruct.PageAddress = flash_dest;
+ EraseInitStruct.NbPages = (4 * num_word32 + FLASH_PAGE_SIZE - 4) / FLASH_PAGE_SIZE;
+ #elif defined(STM32L4)
__HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_ALL_ERRORS);
// erase the sector(s)