FL-528 GUI: View, ViewDispather. Dolphin: first start. (#276)
* GUI: view. Flooper-blooper fix compilation error. * GUI: view and viewdispatcher bones * GUI: view implementation, view models, view dispatcher * GUI: view navigation, model refinement. Power: use view, view dispatcher. * HAL Flash: proper page write. Dolphin: views. Power: views * Dolphin: transition idle scree to Views * Dolphin: input events on stats view. Format sources. * HAL: flash erase. Dolphin: permanent state storage. * Dolphin: first start welcome. HAL: flash operation status, errata 2.2.9 crutch.
This commit is contained in:
@@ -122,6 +122,8 @@ int main(void)
|
||||
delay_us_init_DWT();
|
||||
api_hal_vcp_init();
|
||||
api_hal_spi_init();
|
||||
// Errata 2.2.9, Flash OPTVERR flag is always set after system reset
|
||||
__HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_ALL_ERRORS);
|
||||
/* USER CODE END 2 */
|
||||
|
||||
/* Init scheduler */
|
||||
|
@@ -2,14 +2,28 @@
|
||||
#include <api-hal-bt.h>
|
||||
#include <stm32wbxx.h>
|
||||
|
||||
void api_hal_flash_write_dword(size_t address, uint64_t data) {
|
||||
bool api_hal_flash_erase(uint8_t page, uint8_t count) {
|
||||
api_hal_bt_lock_flash();
|
||||
HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, address, data);
|
||||
FLASH_EraseInitTypeDef erase;
|
||||
erase.TypeErase = FLASH_TYPEERASE_PAGES;
|
||||
erase.Page = page;
|
||||
erase.NbPages = count;
|
||||
uint32_t error;
|
||||
HAL_StatusTypeDef status = HAL_FLASHEx_Erase(&erase, &error);
|
||||
api_hal_bt_unlock_flash();
|
||||
return status == HAL_OK;
|
||||
}
|
||||
|
||||
void api_hal_flash_write_row(size_t address, size_t source_address) {
|
||||
bool api_hal_flash_write_dword(size_t address, uint64_t data) {
|
||||
api_hal_bt_lock_flash();
|
||||
HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, address, source_address);
|
||||
HAL_StatusTypeDef status = HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, address, data);
|
||||
api_hal_bt_unlock_flash();
|
||||
return status == HAL_OK;
|
||||
}
|
||||
|
||||
bool api_hal_flash_write_row(size_t address, size_t source_address) {
|
||||
api_hal_bt_lock_flash();
|
||||
HAL_StatusTypeDef status = HAL_FLASH_Program(FLASH_TYPEPROGRAM_FAST, address, source_address);
|
||||
api_hal_bt_unlock_flash();
|
||||
return status == HAL_OK;
|
||||
}
|
||||
|
@@ -1,15 +1,24 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
|
||||
/*
|
||||
* Erase Flash
|
||||
* Locking operation, uses HSEM to manage shared access.
|
||||
* @param page, page number
|
||||
* @param count, page count to erase
|
||||
*/
|
||||
bool api_hal_flash_erase(uint8_t page, uint8_t count);
|
||||
|
||||
/*
|
||||
* Write double word (64 bits)
|
||||
* Locking operation, uses HSEM to manage shared access.
|
||||
* @param address - destination address, must be double word aligned.
|
||||
* @param data - data to write
|
||||
*/
|
||||
void api_hal_flash_write_dword(size_t address, uint64_t data);
|
||||
bool api_hal_flash_write_dword(size_t address, uint64_t data);
|
||||
|
||||
/*
|
||||
* Write page (4096 bytes or 64 rows of double words).
|
||||
@@ -17,4 +26,4 @@ void api_hal_flash_write_dword(size_t address, uint64_t data);
|
||||
* @param address - destination address, must be page aligned
|
||||
* @param source_address - source address
|
||||
*/
|
||||
void api_hal_flash_write_page(size_t address, size_t source_address);
|
||||
bool api_hal_flash_write_page(size_t address, size_t source_address);
|
||||
|
Reference in New Issue
Block a user