stm32f1xx EEPROM emulation (#3914)
* * Add stm32f1xx EEPROM emulation
* Fix eeprom update compare bug
Squashed commit of the following:
commit b8f248ae08cec0cd81ecbb8854d9b39221d4d573
Author: hsgw <urkwtky@gmail.com>
Date: Sat Sep 15 19:13:48 2018 +0900
fix EEPROM_update wrong compare
commit d4ed4e6ea864e967a3e17f7edee4b0c3b4a25541
Author: hsgw <urkwtky@gmail.com>
Date: Sat Sep 15 17:43:47 2018 +0900
eeprom fix initialization define
commit b61aa7c04d70c64df3416d63e5da08b73b6053af
Author: hsgw <urkwtky@gmail.com>
Date: Sat Sep 15 16:33:40 2018 +0900
maybe working
* Fix FLASH_KEY defines
This commit is contained in:
parent
8efe8b498d
commit
f4094930a3
7 changed files with 42 additions and 21 deletions
|
|
@ -10,7 +10,7 @@
|
|||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* This files are free to use from https://github.com/rogerclarkmelbourne/Arduino_STM32 and
|
||||
* This files are free to use from https://github.com/rogerclarkmelbourne/Arduino_STM32 and
|
||||
* https://github.com/leaflabs/libmaple
|
||||
*
|
||||
* Modifications for QMK and STM32F303 by Yiancar
|
||||
|
|
@ -274,7 +274,7 @@ uint16_t EE_VerifyPageFullWriteVariable(uint16_t Address, uint16_t Data)
|
|||
|
||||
// Check each active page address starting from begining
|
||||
for (idx = pageBase + 4; idx < pageEnd; idx += 4)
|
||||
if ((*(__IO uint32_t*)idx) == 0xFFFFFFFF) // Verify if element
|
||||
if ((*(__IO uint32_t*)idx) == 0xFFFFFFFF) // Verify if element
|
||||
{ // contents are 0xFFFFFFFF
|
||||
FlashStatus = FLASH_ProgramHalfWord(idx, Data); // Set variable data
|
||||
if (FlashStatus != FLASH_COMPLETE)
|
||||
|
|
@ -517,7 +517,7 @@ uint16_t EEPROM_read(uint16_t Address, uint16_t *Data)
|
|||
|
||||
// Get the valid Page end Address
|
||||
pageEnd = pageBase + ((uint32_t)(PageSize - 2));
|
||||
|
||||
|
||||
// Check each active page address starting from end
|
||||
for (pageBase += 6; pageEnd >= pageBase; pageEnd -= 4)
|
||||
if ((*(__IO uint16_t*)pageEnd) == Address) // Compare the read address with the virtual address
|
||||
|
|
@ -574,7 +574,7 @@ uint16_t EEPROM_update(uint16_t Address, uint16_t Data)
|
|||
{
|
||||
uint16_t temp;
|
||||
EEPROM_read(Address, &temp);
|
||||
if (Address == Data)
|
||||
if (temp == Data)
|
||||
return EEPROM_SAME_VALUE;
|
||||
else
|
||||
return EEPROM_write(Address, Data);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue