Изменения на новые настройки пинов и устройств

This commit is contained in:
cfif 2025-05-28 15:16:06 +03:00
parent 0e89352650
commit a8ad10b9a0
1 changed files with 34 additions and 43 deletions

View File

@ -558,51 +558,46 @@ flash_status_type flash_bank2_erase(void)
*/ */
flash_status_type flash_user_system_data_erase(void) flash_status_type flash_user_system_data_erase(void)
{ {
flash_status_type status = FLASH_OPERATE_DONE; flash_status_type status = FLASH_OPERATE_DONE;
uint16_t fap_val = FAP_RELIEVE_KEY; uint16_t fap_val = FAP_RELIEVE_KEY;
/* get the flash access protection status */ /* get the flash access protection status */
if(flash_fap_status_get() != RESET) if(flash_fap_status_get() != RESET)
{ {
fap_val = 0x0000; fap_val = 0x0000;
} }
/* wait for last operation to be completed */
status = flash_operation_wait_for(ERASE_TIMEOUT);
if(status == FLASH_OPERATE_DONE)
{
/* unlock the user system data */ /* unlock the user system data */
FLASH->usd_unlock = FLASH_UNLOCK_KEY1; FLASH->usd_unlock = FLASH_UNLOCK_KEY1;
FLASH->usd_unlock = FLASH_UNLOCK_KEY2; FLASH->usd_unlock = FLASH_UNLOCK_KEY2;
while(FLASH->ctrl_bit.usdulks==RESET); while(FLASH->ctrl_bit.usdulks==RESET);
/* erase the user system data */ /* erase the user system data */
FLASH->ctrl_bit.usders = TRUE; FLASH->ctrl_bit.usders = TRUE;
FLASH->ctrl_bit.erstr = TRUE; FLASH->ctrl_bit.erstr = TRUE;
/* wait for operation to be completed */ /* wait for operation to be completed */
status = flash_operation_wait_for(ERASE_TIMEOUT); status = flash_operation_wait_for(ERASE_TIMEOUT);
/* disable the usders bit */ /* disable the usders bit */
FLASH->ctrl_bit.usders = FALSE; FLASH->ctrl_bit.usders = FALSE;
if((status == FLASH_OPERATE_DONE) && (fap_val == FAP_RELIEVE_KEY)) if((status == FLASH_OPERATE_DONE) && (fap_val == FAP_RELIEVE_KEY))
{ {
/* enable the user system data programming operation */ /* enable the user system data programming operation */
FLASH->ctrl_bit.usdprgm = TRUE; FLASH->ctrl_bit.usdprgm = TRUE;
/* restore the last flash access protection value */ /* restore the last flash access protection value */
USD->fap = (uint16_t)fap_val; USD->fap = (uint16_t)fap_val;
/* wait for operation to be completed */ /* wait for operation to be completed */
status = flash_operation_wait_for(PROGRAMMING_TIMEOUT); status = flash_operation_wait_for(PROGRAMMING_TIMEOUT);
/*disable the usdprgm bit */ /*disable the usdprgm bit */
FLASH->ctrl_bit.usdprgm = FALSE; FLASH->ctrl_bit.usdprgm = FALSE;
} }
}
/* return the status */ /* return the status */
return status; return status;
} }
/** /**
@ -623,34 +618,30 @@ flash_status_type flash_user_system_data_erase(void)
*/ */
flash_status_type flash_eopb0_config(flash_usd_eopb0_type data) flash_status_type flash_eopb0_config(flash_usd_eopb0_type data)
{ {
flash_status_type status = FLASH_OPERATE_DONE; flash_status_type status = FLASH_OPERATE_DONE;
/* wait for last operation to be completed */
status = flash_operation_wait_for(ERASE_TIMEOUT);
if(status == FLASH_OPERATE_DONE)
{
/* unlock the user system data */ /* unlock the user system data */
FLASH->usd_unlock = FLASH_UNLOCK_KEY1; FLASH->usd_unlock = FLASH_UNLOCK_KEY1;
FLASH->usd_unlock = FLASH_UNLOCK_KEY2; FLASH->usd_unlock = FLASH_UNLOCK_KEY2;
while(FLASH->ctrl_bit.usdulks==RESET); while(FLASH->ctrl_bit.usdulks==RESET);
/* enable the user system data programming operation */ /* enable the user system data programming operation */
FLASH->ctrl_bit.usdprgm = TRUE; FLASH->ctrl_bit.usdprgm = TRUE;
/* restore the default eopb0 value */ /* restore the default eopb0 value */
USD->eopb0 = (uint16_t)data; USD->eopb0 = (uint16_t)data;
/* wait for operation to be completed */ /* wait for operation to be completed */
status = flash_operation_wait_for(PROGRAMMING_TIMEOUT); status = flash_operation_wait_for(PROGRAMMING_TIMEOUT);
/*disable the usdprgm bit */ /*disable the usdprgm bit */
FLASH->ctrl_bit.usdprgm = FALSE; FLASH->ctrl_bit.usdprgm = FALSE;
}
/* return the status */ /* return the status */
return status; return status;
} }
/** /**
* @brief program a word at a specified address. * @brief program a word at a specified address.
* @param address: specifies the address to be programmed, word alignment is recommended. * @param address: specifies the address to be programmed, word alignment is recommended.