@@ -10,7 +10,7 @@
# SOURCES: list of sources in the user application
SOURCES = main.c usbd_conf.c usbd_cdc_if.c usb_device.c usbd_desc.c stm32f0xx_hal_msp.c stm32f0xx_it.c system_stm32f0xx.c gpio.c spi.c ssd1306.c stringhelpers.c display.c bootlib.c
SOURCES = main.c usbd_conf.c usbd_cdc_if.c usb_device.c usbd_desc.c stm32f0xx_hal_msp.c stm32f0xx_it.c system_stm32f0xx.c gpio.c spi.c ssd1306.c stringhelpers.c display.c bootlib.c storage.c
# TARGET: name of the user application
TARGET = main
@@ -374,7 +374,7 @@ void display_process(therm_settings_t* s
// Button handler
if(SW_BTN_PRESSED) {
save_settings();
save_settings(&set);
status->state = STATE_IDLE;
}
else {
@@ -401,7 +401,7 @@ void display_process(therm_settings_t* s
save_setpoints(); // TODO: Check for mod
save_setpoints(&set); // TODO: Check for mod
@@ -428,7 +428,7 @@ void display_process(therm_settings_t* s
@@ -454,7 +454,7 @@ void display_process(therm_settings_t* s
user_input(&set->setpoint_steam);
@@ -481,7 +481,7 @@ void display_process(therm_settings_t* s
@@ -7,6 +7,7 @@
#include "spi.h"
#include "stringhelpers.h"
#include "display.h"
#include "storage.h"
#include "usb_device.h"
#include "usbd_cdc_if.h"
@@ -15,9 +16,6 @@
// Prototypes
// Move to header file
void process();
void restore_settings();
void save_settings();
void save_setpoints();
void SystemClock_Config(void);
therm_settings_t set;
@@ -88,7 +86,7 @@ int main(void)
status.pid_enabled = 0;
// Load settings (if any) from EEPROM
restore_settings();
restore_settings(&set);
// Go to brew instead of idle if configured thusly
if(set.boottobrew)
@@ -341,68 +339,4 @@ void process()
void save_settings()
{
// TODO: Rework with FLASH read/write
/*
Minimal_EEPROM_Unlock();
// Try programming a word at an address divisible by 4
Minimal_EEPROM_ProgramWord(EEPROM_BASE_ADDR + EEPROM_ADDR_BOOTTOBREW, boottobrew);
Minimal_EEPROM_ProgramWord(EEPROM_BASE_ADDR + EEPROM_ADDR_WINDUP_GUARD, windup_guard);
Minimal_EEPROM_ProgramWord(EEPROM_BASE_ADDR + EEPROM_ADDR_K_P, k_p);
Minimal_EEPROM_ProgramWord(EEPROM_BASE_ADDR + EEPROM_ADDR_K_I, k_i);
Minimal_EEPROM_ProgramWord(EEPROM_BASE_ADDR + EEPROM_ADDR_K_D, k_d);
Minimal_EEPROM_ProgramWord(EEPROM_BASE_ADDR + EEPROM_ADDR_UNITS, temp_units);
Minimal_EEPROM_Lock();
*/
void save_setpoints()
Minimal_EEPROM_ProgramWord(EEPROM_BASE_ADDR + EEPROM_ADDR_BREWTEMP, setpoint_brew);
Minimal_EEPROM_ProgramWord(EEPROM_BASE_ADDR + EEPROM_ADDR_STEAMTEMP, setpoint_steam);
// TODO: Make a struct that has all settings in it. Pass by ref to this func in a library.
void restore_settings()
/* Minimal_EEPROM_Unlock();
while(Minimal_FLASH_GetStatus()==FLASH_BUSY);
boottobrew = (*(__IO uint32_t*)(EEPROM_BASE_ADDR + EEPROM_ADDR_BOOTTOBREW));
windup_guard = (*(__IO uint32_t*)(EEPROM_BASE_ADDR + EEPROM_ADDR_WINDUP_GUARD));
k_p = (*(__IO uint32_t*)(EEPROM_BASE_ADDR + EEPROM_ADDR_K_P));
k_i = (*(__IO uint32_t*)(EEPROM_BASE_ADDR + EEPROM_ADDR_K_I));
k_d = (*(__IO uint32_t*)(EEPROM_BASE_ADDR + EEPROM_ADDR_K_D));
setpoint_brew = (*(__IO uint32_t*)(EEPROM_BASE_ADDR + EEPROM_ADDR_BREWTEMP));
setpoint_steam = (*(__IO uint32_t*)(EEPROM_BASE_ADDR + EEPROM_ADDR_STEAMTEMP));
temp_units = (*(__IO uint32_t*)(EEPROM_BASE_ADDR + EEPROM_ADDR_UNITS));
Minimal_EEPROM_Lock(); */
// vim:softtabstop=4 shiftwidth=4 expandtab
new file 100644
#include "stm32f0xx_hal.h"
#include "states.h"
void save_settings(therm_settings_t *tosave)
void save_setpoints(therm_settings_t *tosave)
void restore_settings(therm_settings_t *tosave)
#ifndef STORAGE_H
#define STORAGE_H
void save_settings(therm_settings_t *tosave);
void save_setpoints(therm_settings_t *tosave);
void restore_settings(therm_settings_t *tosave);
#endif
Status change: