21#include "cpu_conf_common.h" 
   23#if defined(CPU_LINE_STM32F030x4) 
   24#include "vendor/stm32f030x4.h" 
   25#elif defined(CPU_LINE_STM32MP157Cxx) 
   26#include "vendor/stm32mp157cxx_cm4.h" 
   29#include "irqs/f0/irqs.h" 
   32#include "irqs/f1/irqs.h" 
   35#include "irqs/f2/irqs.h" 
   38#include "irqs/f3/irqs.h" 
   41#include "irqs/f4/irqs.h" 
   44#include "irqs/f7/irqs.h" 
   47#include "irqs/g0/irqs.h" 
   50#include "irqs/c0/irqs.h" 
   53#include "irqs/g4/irqs.h" 
   56#include "irqs/l0/irqs.h" 
   59#include "irqs/l1/irqs.h" 
   62#include "irqs/l4/irqs.h" 
   65#include "irqs/l5/irqs.h" 
   68#include "irqs/u5/irqs.h" 
   72#include "irqs/wb/irqs.h" 
   75#include "irqs/wl/irqs.h" 
   77#error Not supported CPU family 
   81#if !defined(NUM_HEAPS) && CPU_HAS_BACKUP_RAM 
   97#define CORTEXM_ISB_REQUIRED_AFTER_WFI  1 
  103#define CPU_DEFAULT_IRQ_PRIO            (1U) 
  105#if !defined(CPU_FAM_STM32MP1) 
  106#define CPU_FLASH_BASE                  FLASH_BASE 
  110#if defined(CPU_LINE_STM32F030x4) 
  111#define CPU_IRQ_NUMOF                   (28U) 
  112#elif defined(CPU_MODEL_STM32MP157CAC) 
  113#define CPU_IRQ_NUMOF                   (150U) 
  121#if defined(CPU_FAM_STM32U5) 
  122#define FLASHPAGE_SIZE                  (8192U) 
  123#elif defined(CPU_FAM_STM32WB) 
  124#define FLASHPAGE_SIZE                  (4096U) 
  125#elif defined(CPU_LINE_STM32F091xC) || defined(CPU_LINE_STM32F072xB) \ 
  126   || defined(CPU_LINE_STM32F030xC) || defined(CPU_LINE_STM32F103xE) \ 
  127   || defined(CPU_FAM_STM32F3) || defined(CPU_FAM_STM32L4) \ 
  128   || defined(CPU_FAM_STM32G4) || defined(CPU_FAM_STM32G0) \ 
  129   || defined(CPU_FAM_STM32L5) || defined(CPU_FAM_STM32WL) \ 
  130   || defined(CPU_FAM_STM32C0) 
  131#define FLASHPAGE_SIZE                  (2048U) 
  132#elif defined(CPU_LINE_STM32F051x8) || defined(CPU_LINE_STM32F042x6) \ 
  133   || defined(CPU_LINE_STM32F070xB) || defined(CPU_LINE_STM32F030x8) \ 
  134   || defined(CPU_LINE_STM32F030x4) || defined(CPU_LINE_STM32F103xB) \ 
  135   || defined(CPU_LINE_STM32F031x6) 
  136#define FLASHPAGE_SIZE                  (1024U) 
  137#elif defined(CPU_FAM_STM32L1) 
  138#define FLASHPAGE_SIZE                  (256U) 
  139#elif defined(CPU_FAM_STM32L0) 
  140#define FLASHPAGE_SIZE                  (128U) 
  143#if defined(CPU_FAM_STM32L0) || defined(CPU_FAM_STM32L1) 
  144#define FLASHPAGE_ERASE_STATE           (0x00U) 
  148#define FLASHPAGE_NUMOF                 (STM32_FLASHSIZE / FLASHPAGE_SIZE) 
  151#if defined(CPU_FAM_STM32F2) || defined(CPU_FAM_STM32F4) || \ 
  152    defined(CPU_FAM_STM32F7) 
  153#define PERIPH_FLASHPAGE_CUSTOM_PAGESIZES 
  154#define PERIPH_FLASHPAGE_NEEDS_FLASHPAGE_ADDR 
  167#if (defined(FLASH_OPTCR_DB1M) && (STM32_FLASHSIZE >= (1024 * 1024))) 
  168#define FLASHPAGE_DUAL_BANK             1 
  170#define FLASHPAGE_DUAL_BANK             0 
  174#if defined(CPU_FAM_STM32F7) 
  175#if defined(CPU_LINE_STM32F745xx) || \ 
  176    defined(CPU_LINE_STM32F746xx) || \ 
  177    defined(CPU_LINE_STM32F750xx) || \ 
  178    defined(CPU_LINE_STM32F756xx) || \ 
  179    defined(CPU_LINE_STM32F765xx) || \ 
  180    defined(CPU_LINE_STM32F767xx) || \ 
  181    defined(CPU_LINE_STM32F769xx) || \ 
  182    defined(CPU_LINE_STM32F777xx) || \ 
  183    defined(CPU_LINE_STM32F779xx) 
  184#define FLASHPAGE_MIN_SECTOR_SIZE       (32 * 1024) 
  185#elif defined(CPU_LINE_STM32F722xx) || \ 
  186      defined(CPU_LINE_STM32F723xx) || \ 
  187      defined(CPU_LINE_STM32F730xx) || \ 
  188      defined(CPU_LINE_STM32F732xx) || \ 
  189      defined(CPU_LINE_STM32F733xx) 
  190#define FLASHPAGE_MIN_SECTOR_SIZE       (16 * 1024) 
  193#error Unknown STM32F7 Line, unable to determine FLASHPAGE_MIN_SECTOR_SIZE 
  197#define FLASHPAGE_MIN_SECTOR_SIZE       (16 * 1024) 
  200#if FLASHPAGE_DUAL_BANK 
  203#define FLASHPAGE_NUMOF                 ((STM32_FLASHSIZE / \ 
  204                                         (8 * FLASHPAGE_MIN_SECTOR_SIZE)) + 8) 
  209#define FLASHPAGE_NUMOF                 ((STM32_FLASHSIZE / \ 
  210                                         (8 * FLASHPAGE_MIN_SECTOR_SIZE)) + 4) 
  218#if defined(CPU_FAM_STM32L4) || defined(CPU_FAM_STM32WB) || \ 
  219    defined(CPU_FAM_STM32G4) || defined(CPU_FAM_STM32G0) || \ 
  220    defined(CPU_FAM_STM32L5) || defined(CPU_FAM_STM32U5) || \ 
  221    defined(CPU_FAM_STM32WL) || defined(CPU_FAM_STM32C0) 
  222#define FLASHPAGE_WRITE_BLOCK_SIZE            (8U) 
  223typedef uint64_t stm32_flashpage_block_t;
 
  224#elif defined(CPU_FAM_STM32L0) || defined(CPU_FAM_STM32L1) || \ 
  225      defined(CPU_FAM_STM32F2) || defined(CPU_FAM_STM32F4) || \ 
  226      defined(CPU_FAM_STM32F7) 
  227#define FLASHPAGE_WRITE_BLOCK_SIZE            (4U) 
  228typedef uint32_t stm32_flashpage_block_t;
 
  230#define FLASHPAGE_WRITE_BLOCK_SIZE            (2U) 
  231typedef uint16_t stm32_flashpage_block_t;
 
  234#if defined(CPU_FAM_STM32L4) || defined(CPU_FAM_STM32WB) || \ 
  235    defined(CPU_FAM_STM32G4) || defined(CPU_FAM_STM32G0) || \ 
  236    defined(CPU_FAM_STM32L5) || defined(CPU_FAM_STM32U5) || \ 
  237    defined(CPU_FAM_STM32WL) || defined(CPU_FAM_STM32C0) 
  238#define FLASHPAGE_WRITE_BLOCK_ALIGNMENT       (8U) 
  241#define FLASHPAGE_WRITE_BLOCK_ALIGNMENT       (4U) 
  250#define CPU_HAS_BITBAND 1