117 lines
1.7 KiB
C
117 lines
1.7 KiB
C
/*
|
|
* flash.c
|
|
*
|
|
* Created on: 4 àâã. 2021 ã.
|
|
* Author: Toporov
|
|
*/
|
|
|
|
|
|
#include "my.h"
|
|
#include "flash.h"
|
|
#include "stm32f4xx_hal_flash.h"
|
|
#include "stm32f4xx_hal_flash_ex.h"
|
|
|
|
|
|
static FLASH_EraseInitTypeDef FlashEraseInit;
|
|
__IO UserData_TypeDef pardata;
|
|
|
|
__IO uint16_t COUNT_EXT = 0;
|
|
|
|
|
|
|
|
|
|
void MX_FLASH_Init(void)
|
|
{
|
|
__HAL_RCC_SYSCFG_CLK_ENABLE();
|
|
|
|
FlashEraseInit.TypeErase = FLASH_TYPEERASE_SECTORS;
|
|
FlashEraseInit.Banks = FLASH_BANK_1;
|
|
FlashEraseInit.Sector = FLASH_SECTOR_7;
|
|
FlashEraseInit.NbSectors = 1;
|
|
FlashEraseInit.VoltageRange = FLASH_VOLTAGE_RANGE_3;
|
|
|
|
rdPar();
|
|
}
|
|
|
|
|
|
void wrPar(void)
|
|
{
|
|
__IO uint32_t Address, lenpar, i;
|
|
__IO uint32_t *pData;
|
|
uint32_t SECTORError = 0;
|
|
|
|
lenpar = sizeof(UserData_TypeDef);
|
|
while(lenpar % 4) {
|
|
lenpar++;
|
|
}
|
|
lenpar >>= 2;
|
|
|
|
HAL_FLASH_Unlock();
|
|
if(HAL_FLASHEx_Erase(&FlashEraseInit, &SECTORError) == HAL_OK)
|
|
{
|
|
Address = USERPAGE;
|
|
pData = (uint32_t *) &pardata;
|
|
for(i = 0; i < lenpar; i++)
|
|
{
|
|
HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, Address, *pData++);
|
|
Address += 4;
|
|
}
|
|
}
|
|
HAL_FLASH_Lock();
|
|
}
|
|
|
|
|
|
|
|
void rdPar(void)
|
|
{
|
|
uint8_t i;
|
|
uint32_t lenpar;
|
|
volatile bool rewrite = false;
|
|
|
|
lenpar = sizeof(UserData_TypeDef);
|
|
memcpy((void *) &pardata, (void *) USERPAGE, lenpar);
|
|
|
|
//pardata.OWN = 0xffff;//todo
|
|
if(pardata.OWN == 0xffff)
|
|
{
|
|
pardata.OWN = 1; //àäðåññ íîäáàñ
|
|
pardata.BAUD = 5;
|
|
pardata.INFB = 1;
|
|
|
|
pardata.IIN = CHARGE;
|
|
pardata.IFV = Hp0_1;
|
|
pardata.IFN = Lp100000;
|
|
pardata.IKU = Ku1;
|
|
pardata.IKE = 1;
|
|
pardata.IKD = 0;
|
|
pardata.IKS = 0;
|
|
pardata.IPZ = 0;
|
|
pardata.OPZ = 0;
|
|
|
|
pardata.KCOND = 1.0f;
|
|
pardata.SENS = 1.0f;
|
|
pardata.ACCEL = 100.0f;
|
|
|
|
rewrite = true;
|
|
}
|
|
|
|
////////////////////
|
|
if(rewrite)
|
|
{
|
|
rewrite = false;
|
|
wrPar();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|