diff --git a/drivers/flash_regs.h b/drivers/flash_regs.h new file mode 100644 index 0000000..26f4593 --- /dev/null +++ b/drivers/flash_regs.h @@ -0,0 +1,97 @@ +/** @file flash_regs.h + * Module defining flash memory interface registers. + * + * Mainly made to be used by the rcc module. It is recommanded to go through + * the functions provided by that module instead of directly using the registers + * defined here. + */ + +#ifndef _FLASH_REGS_H_ +#define _FLASH_REGS_H_ + +//--includes-------------------------------------------------------------------- + +#include "stdint.h" + + +//--type definitions------------------------------------------------------------ + +#define FLASH_BASE_ADDRESS 0x40022000 + +union FLASH_ACR { + struct __attribute__((packed)) { + uint32_t LATENCY:3; + uint32_t HLFCYA:1; + uint32_t PRFTBE:1; + uint32_t PRFTBS:1; + uint32_t reserved1:26; + }; + uint32_t word; +}; + +union FLASH_KEYR { + struct __attribute__((packed)) { + uint32_t reserved1; //TODO + }; + uint32_t word; +}; + +union FLASH_OPTKEYR { + struct __attribute__((packed)) { + uint32_t reserved1; //TODO + }; + uint32_t word; +}; + +union FLASH_SR { + struct __attribute__((packed)) { + uint32_t reserved1; //TODO + }; + uint32_t word; +}; + +union FLASH_CR { + struct __attribute__((packed)) { + uint32_t reserved1; //TODO + }; + uint32_t word; +}; + +union FLASH_AR { + struct __attribute__((packed)) { + uint32_t reserved1; //TODO + }; + uint32_t word; +}; + +union FLASH_OBR { + struct __attribute__((packed)) { + uint32_t reserved1; //TODO + }; + uint32_t word; +}; + +union FLASH_WRPR { + struct __attribute__((packed)) { + uint32_t reserved1; //TODO + }; + uint32_t word; +}; + +struct __attribute__((packed)) FLASH { + union FLASH_ACR ACR; + union FLASH_KEYR KEYR; + union FLASH_OPTKEYR OPTKEYR; + union FLASH_SR SR; + union FLASH_CR CR; + union FLASH_AR AR; + uint32_t reserved1; + union FLASH_OBR OBR; + union FLASH_WRPR WRPR; +}; + + +//--functions------------------------------------------------------------------- + +#endif //_FLASH_REGS_H_ + diff --git a/drivers/rcc_regs.h b/drivers/rcc_regs.h index 3c804fb..047f7e9 100644 --- a/drivers/rcc_regs.h +++ b/drivers/rcc_regs.h @@ -270,6 +270,7 @@ struct __attribute__((packed)) RCC { union RCC_CSR CSR; }; + //--functions------------------------------------------------------------------- #endif //_RCC_REGS_H_