This commit is contained in:
2025-09-07 16:02:22 +02:00
commit 627acef32c
145 changed files with 74048 additions and 0 deletions

26
User/lib/config.c Normal file
View File

@@ -0,0 +1,26 @@
#include "config.h"
#include "ch32v30x_flash.h"
PersistentData_t persistent;
void loadConfig() {
memcpy (&persistent, FLASH_USER_PAGE_ADDR, sizeof (persistent));
uint32_t crcSum = *((uint32_t *)(((uint8_t *)&persistent) + (sizeof (persistent) - 2)));
memset ((((uint8_t *)&persistent) + (sizeof (persistent) - sizeof(crcSum))), 0, 4);
CRC_ResetDR();
uint32_t currentSum = CRC_CalcBlockCRC ((uint32_t *)&persistent, sizeof (persistent) - 2);
if (currentSum != crcSum) {
memset (&persistent, 0, sizeof (persistent));
}
}
void saveConfig() {
CRC_ResetDR();
uint32_t currentSum = CRC_CalcBlockCRC ((uint32_t *)&persistent, sizeof (persistent) - 2);
memcpy ((((uint8_t *)&persistent) + (sizeof (persistent) - sizeof(currentSum))), (uint8_t *)currentSum, 4);
FLASH_Unlock();
FLASH_ErasePage_Fast (1919);
FLASH_ProgramPage_Fast (1919, (uint32_t *)&persistent);
FLASH_Lock();
}