![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Sample IAP test code for Nucleo_F091RC
Diff: stm_iap.h
- Revision:
- 0:de2687a62a94
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/stm_iap.h Sat Jun 17 07:00:41 2017 +0000 @@ -0,0 +1,104 @@ +/** + * Author: Narasimma DLN + * Email: narasimma23@gmail.com + */ + +#include "mbed.h" + +#define FLASH_START_ADDR 0x08000000 +#define FLASH_SIZE_ADDR 0x1FFFF7CC +#define FLASH_SIZE (256 * 1024) +#define FLASH_SECTOR_SIZE (2 * FLASH_PAGE_SIZE) +#define FLASH_SECTORS 64 + +/* +#define FLASH_SECTOR_0 0x08000000 +#define FLASH_SECTOR_1 0x08001000 +#define FLASH_SECTOR_2 0x08002000 +#define FLASH_SECTOR_3 0x08003000 +#define FLASH_SECTOR_4 0x08004000 +#define FLASH_SECTOR_5 0x08005000 +#define FLASH_SECTOR_6 0x08006000 +#define FLASH_SECTOR_7 0x08007000 +#define FLASH_SECTOR_8 0x08008000 +#define FLASH_SECTOR_9 0x08009000 +#define FLASH_SECTOR_10 0x0800A000 +#define FLASH_SECTOR_11 0x0800B000 +#define FLASH_SECTOR_12 0x0800C000 +#define FLASH_SECTOR_13 0x0800D000 +#define FLASH_SECTOR_14 0x0800E000 +#define FLASH_SECTOR_15 0x0800F000 +#define FLASH_SECTOR_16 0x08010000 +#define FLASH_SECTOR_17 0x08011000 +#define FLASH_SECTOR_18 0x08012000 +#define FLASH_SECTOR_19 0x08013000 +#define FLASH_SECTOR_20 0x08014000 +#define FLASH_SECTOR_21 0x08015000 +#define FLASH_SECTOR_22 0x08016000 +#define FLASH_SECTOR_23 0x08017000 +#define FLASH_SECTOR_24 0x08018000 +#define FLASH_SECTOR_25 0x08019000 +#define FLASH_SECTOR_26 0x0801A000 +#define FLASH_SECTOR_27 0x0801B000 +#define FLASH_SECTOR_28 0x0801C000 +#define FLASH_SECTOR_29 0x0801D000 +#define FLASH_SECTOR_30 0x0801E000 +#define FLASH_SECTOR_31 0x0801F000 +#define FLASH_SECTOR_32 0x08020000 +#define FLASH_SECTOR_33 0x08021000 +#define FLASH_SECTOR_34 0x08022000 +#define FLASH_SECTOR_35 0x08023000 +#define FLASH_SECTOR_36 0x08024000 +#define FLASH_SECTOR_37 0x08025000 +#define FLASH_SECTOR_38 0x08026000 +#define FLASH_SECTOR_39 0x08027000 +#define FLASH_SECTOR_40 0x08028000 +#define FLASH_SECTOR_41 0x08029000 +#define FLASH_SECTOR_42 0x0802A000 +#define FLASH_SECTOR_43 0x0802B000 +#define FLASH_SECTOR_44 0x0802C000 +#define FLASH_SECTOR_45 0x0802D000 +#define FLASH_SECTOR_46 0x0802E000 +#define FLASH_SECTOR_47 0x0802F000 +#define FLASH_SECTOR_48 0x08030000 +#define FLASH_SECTOR_49 0x08031000 +#define FLASH_SECTOR_50 0x08032000 +#define FLASH_SECTOR_51 0x08033000 +#define FLASH_SECTOR_52 0x08034000 +#define FLASH_SECTOR_53 0x08035000 +#define FLASH_SECTOR_54 0x08036000 +#define FLASH_SECTOR_55 0x08037000 +#define FLASH_SECTOR_56 0x08038000 +#define FLASH_SECTOR_57 0x08039000 +#define FLASH_SECTOR_58 0x0803A000 +#define FLASH_SECTOR_59 0x0803B000 +#define FLASH_SECTOR_60 0x0803C000 +#define FLASH_SECTOR_61 0x0803D000 +#define FLASH_SECTOR_62 0x0803E000 +#define FLASH_SECTOR_63 0x0803F000 +*/ + +/* Return Code */ +typedef enum { + Success = 0, + WriteProtError, + ProgrammingError, +}IAPCode; + +// Get the flash sectors +void get_flash_sectors(void); + +// Get Flash Size +uint32_t get_flash_size(void); + +// Get Sector Number +uint8_t get_sector_number(uint32_t _addr); + +// Get Sector Size +uint32_t get_sector_size(uint32_t addr); + +// Erase a Flash Sector +IAPCode erase_sector(int address); + +// Programming Flash Memory +IAPCode program_flash(uint32_t address, uint16_t *data, unsigned int length); \ No newline at end of file