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; +} + /**@}*/