From 389ec825385042b3896b1fd9171548ba38cdf0b2 Mon Sep 17 00:00:00 2001 From: Karl Palsson Date: Mon, 30 Apr 2018 23:29:07 +0000 Subject: [PATCH] stm32f3: flash: add prefetch helpers Should be added to f2/f4 as well, but the bit definitions are different. --- include/libopencm3/stm32/f3/flash.h | 8 ++++++++ lib/stm32/f3/flash.c | 21 +++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/include/libopencm3/stm32/f3/flash.h b/include/libopencm3/stm32/f3/flash.h index 58a8c9fd..2a2a9775 100644 --- a/include/libopencm3/stm32/f3/flash.h +++ b/include/libopencm3/stm32/f3/flash.h @@ -67,6 +67,14 @@ #define FLASH_CR_MER (1 << 2) #define FLASH_CR_PER (1 << 1) #define FLASH_CR_PG (1 << 0) + +BEGIN_DECLS + +void flash_prefetch_enable(void); +void flash_prefetch_disable(void); + +END_DECLS + /**@}*/ #endif diff --git a/lib/stm32/f3/flash.c b/lib/stm32/f3/flash.c index 58687161..cac2ea45 100644 --- a/lib/stm32/f3/flash.c +++ b/lib/stm32/f3/flash.c @@ -58,5 +58,26 @@ void flash_clear_status_flags(void) flash_clear_eop_flag(); flash_clear_bsy_flag(); } + +/** + * Enable the FLASH Prefetch Buffer + * This buffer is used for instruction fetches and is enabled by default after + * reset. + */ +void flash_prefetch_enable(void) +{ + FLASH_ACR |= FLASH_ACR_PRFTBE; +} + +/** + * Disable the FLASH Prefetch Buffer + * This buffer is used for instruction fetches and is enabled by default after + * reset. + */ +void flash_prefetch_disable(void) +{ + FLASH_ACR &= ~FLASH_ACR_PRFTBE; +} + /**@}*/