Skip to content

Commit ea30140

Browse files
committed
refactory: flash var naming and calculation
1 parent 1ee14b9 commit ea30140

File tree

2 files changed

+10
-10
lines changed

2 files changed

+10
-10
lines changed

Application/Inc/Flash.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ class Flash {
2424
bool Init();
2525

2626
private:
27-
static constexpr uint8_t page_total = 63;
27+
static constexpr uint8_t last_page{63};
2828
static constexpr uint32_t page_size{0x800};
2929
static constexpr uint32_t user_pages{3};
30-
static constexpr uint32_t address_end{0x08020000 - page_size};
30+
static constexpr uint32_t last_page_address{0x08000000 + (last_page * page_size)};
3131

3232
bool Write(Payload payload);
3333
Payload Read(uint32_t address);

Application/Src/Flash.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@ bool Flash::Save() {
2323
void Flash::Load() {
2424
std::array<uint32_t, user_pages> write_level{};
2525
for (uint8_t page = 0; page < user_pages; page++) {
26-
write_level[page] = Read(address_end - (page * page_size)).write_counts;
26+
write_level[page] = Read(last_page_address - (page * page_size)).write_counts;
2727
}
2828

2929
// find the (last save) max write count
3030
auto max_iter = std::max_element(write_level.rbegin(), write_level.rend());
3131
auto max_index = std::distance(write_level.begin(), max_iter.base()) - 1;
3232

33-
Payload payload = Read(address_end - (max_index * page_size));
33+
Payload payload = Read(last_page_address - (max_index * page_size));
3434

3535
serial.sendString("\nDAC Level: ");
3636
serial.sendNumber(payload.dac_level);
@@ -51,7 +51,7 @@ bool Flash::Write(Payload payload) {
5151
// read the write_level of each user page
5252
std::array<uint32_t, user_pages> write_level{};
5353
for (uint8_t page = 0; page < user_pages; page++) {
54-
write_level[page] = Read(address_end - (page * page_size)).write_counts;
54+
write_level[page] = Read(last_page_address - (page * page_size)).write_counts;
5555
}
5656

5757
// find the min & max write count and the element location
@@ -65,7 +65,7 @@ bool Flash::Write(Payload payload) {
6565
FLASH_EraseInitTypeDef EraseInitStruct{0};
6666
EraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES;
6767
EraseInitStruct.NbPages = 1;
68-
EraseInitStruct.Page = page_total - min_index;
68+
EraseInitStruct.Page = last_page - min_index;
6969
EraseInitStruct.Banks = FLASH_BANK_1;
7070
__HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_SR_ERRORS);
7171
HAL_FLASH_Unlock();
@@ -76,7 +76,7 @@ bool Flash::Write(Payload payload) {
7676
}
7777

7878
// write the data to the page
79-
uint32_t address = address_end - (min_index * page_size);
79+
uint32_t address = last_page_address - (min_index * page_size);
8080
uint32_t size{sizeof(Payload) / sizeof(uint64_t)};
8181
uint64_t *data_ptr = reinterpret_cast<uint64_t *>(&payload);
8282
for (size_t i = 0; i < size; i++) {
@@ -106,7 +106,7 @@ bool Flash::Purge() {
106106
FLASH_EraseInitTypeDef EraseInitStruct{0};
107107
EraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES;
108108
EraseInitStruct.NbPages = user_pages;
109-
EraseInitStruct.Page = page_total - user_pages + 1;
109+
EraseInitStruct.Page = last_page - user_pages + 1;
110110
EraseInitStruct.Banks = FLASH_BANK_1;
111111
__HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_SR_ERRORS);
112112
HAL_FLASH_Unlock();
@@ -127,7 +127,7 @@ bool Flash::Init() {
127127
FLASH_EraseInitTypeDef EraseInitStruct{0};
128128
EraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES;
129129
EraseInitStruct.NbPages = user_pages;
130-
EraseInitStruct.Page = page_total - user_pages + 1;
130+
EraseInitStruct.Page = last_page - user_pages + 1;
131131
EraseInitStruct.Banks = FLASH_BANK_1;
132132
__HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_SR_ERRORS);
133133
HAL_FLASH_Unlock();
@@ -142,7 +142,7 @@ bool Flash::Init() {
142142
uint32_t size{sizeof(Payload) / sizeof(uint64_t)};
143143
uint64_t *data_ptr = reinterpret_cast<uint64_t *>(&payload);
144144
for (uint8_t page = 0; page < user_pages; page++) {
145-
uint32_t address = address_end - (page * page_size);
145+
uint32_t address = last_page_address - (page * page_size);
146146
for (size_t i = 0; i < size; i++) {
147147
if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, address, data_ptr[i]) != HAL_OK) {
148148
HAL_FLASH_Lock();

0 commit comments

Comments
 (0)