Bayley Wang / Mbed 2 deprecated foc-ed_in_the_bot_compact

Dependencies:   FastPWM3 mbed

Committer:
bwang
Date:
Fri Feb 09 03:49:31 2018 +0000
Revision:
181:d3510c8beab6
02/08/2018 22:48 - integrated CommandProcessor and PreferenceWriter (but code does not use dynamic config variables or set error flags yet)

Who changed what in which revision?

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