@@ -23,14 +23,14 @@ bool Flash::Save() {
2323void 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 (" \n DAC 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