robot

Dependencies:   FastPWM3 mbed

Committer:
bwang
Date:
Tue Feb 28 03:32:21 2017 +0000
Revision:
79:d0b1bb3dcf68
added FlashWriter class

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bwang 79:d0b1bb3dcf68 1 #include "stm32f4xx_flash.h"
bwang 79:d0b1bb3dcf68 2 #include "FlashWriter.h"
bwang 79:d0b1bb3dcf68 3
bwang 79:d0b1bb3dcf68 4 FlashWriter::FlashWriter(int sector) {
bwang 79:d0b1bb3dcf68 5 if (sector > 7) sector = 7;
bwang 79:d0b1bb3dcf68 6 __base = __SECTOR_ADDRS[sector];
bwang 79:d0b1bb3dcf68 7
bwang 79:d0b1bb3dcf68 8 FLASH_Unlock();
bwang 79:d0b1bb3dcf68 9 FLASH_ClearFlag( FLASH_FLAG_EOP | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR);
bwang 79:d0b1bb3dcf68 10 FLASH_EraseSector(__SECTORS[sector], VoltageRange_3);
bwang 79:d0b1bb3dcf68 11 }
bwang 79:d0b1bb3dcf68 12
bwang 79:d0b1bb3dcf68 13 void FlashWriter::write(uint32_t index, int x) {
bwang 79:d0b1bb3dcf68 14 union {int a; uint32_t b;};
bwang 79:d0b1bb3dcf68 15 a = x;
bwang 79:d0b1bb3dcf68 16 FLASH_ProgramWord(__base + 4 * index, b);
bwang 79:d0b1bb3dcf68 17 }
bwang 79:d0b1bb3dcf68 18
bwang 79:d0b1bb3dcf68 19 void FlashWriter::write(uint32_t index, unsigned int x) {
bwang 79:d0b1bb3dcf68 20 FLASH_ProgramWord(__base + 4 * index, x);
bwang 79:d0b1bb3dcf68 21 }
bwang 79:d0b1bb3dcf68 22
bwang 79:d0b1bb3dcf68 23 void FlashWriter::write(uint32_t index, float x) {
bwang 79:d0b1bb3dcf68 24 union {float a; uint32_t b;};
bwang 79:d0b1bb3dcf68 25 a = x;
bwang 79:d0b1bb3dcf68 26 FLASH_ProgramWord(__base + 4 * index, b);
bwang 79:d0b1bb3dcf68 27 }
bwang 79:d0b1bb3dcf68 28
bwang 79:d0b1bb3dcf68 29 void FlashWriter::close() {
bwang 79:d0b1bb3dcf68 30 FLASH_Lock();
bwang 79:d0b1bb3dcf68 31 }
bwang 79:d0b1bb3dcf68 32
bwang 79:d0b1bb3dcf68 33 int flashReadInt(uint32_t sector, uint32_t index) {
bwang 79:d0b1bb3dcf68 34 return *(int*) (__SECTOR_ADDRS[sector] + 4 * index);
bwang 79:d0b1bb3dcf68 35 }
bwang 79:d0b1bb3dcf68 36
bwang 79:d0b1bb3dcf68 37 uint32_t flashReadUint(uint32_t sector, uint32_t index) {
bwang 79:d0b1bb3dcf68 38 return *(uint32_t*) (__SECTOR_ADDRS[sector] + 4 * index);
bwang 79:d0b1bb3dcf68 39 }
bwang 79:d0b1bb3dcf68 40
bwang 79:d0b1bb3dcf68 41 float flashReadFloat(uint32_t sector, uint32_t index) {
bwang 79:d0b1bb3dcf68 42 return *(float*) (__SECTOR_ADDRS[sector] + 4 * index);
bwang 79:d0b1bb3dcf68 43 }