bad dc motor controller with current mode

Dependencies:   mbed FastPWM3

Committer:
bwang
Date:
Sun Feb 03 03:38:05 2019 +0000
Revision:
0:2b1edabdd26b
first commit

Who changed what in which revision?

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