Files
ch32v20x-examples/EVT/EXAM/USB/USBD/MSC_U-Disk/User/Internal_Flash.c
T
2023-02-01 14:19:13 +08:00

34 lines
1.3 KiB
C

/********************************** (C) COPYRIGHT *******************************
* File Name : Internal_Flash.c
* Author : WCH
* Version : V1.0.0
* Date : 2022/08/08
* Description : Internal Flash program
*********************************************************************************
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
* Attention: This software (modified or not) and binary are used for
* microcontroller manufactured by Nanjing Qinheng Microelectronics.
*******************************************************************************/
#include "ch32v20x.h"
#include "Internal_Flash.h"
#include "ch32v20x_flash.h"
void IFlash_Prog_512(uint32_t address,uint32_t *pbuf)
{
if (address < IFLASH_UDISK_START_ADDR || (address + 511) > IFLASH_UDISK_END_ADDR )
{
printf("Error Address %x\n",address);
return;
}
address &= 0x00FFFFFF;
address |= 0x08000000;
__disable_irq();
FLASH_Unlock_Fast();
FLASH_ErasePage_Fast(address);
FLASH_ProgramPage_Fast(address, pbuf);
FLASH_ErasePage_Fast(address + INTERNAL_FLASH_PAGE_SIZE);
FLASH_ProgramPage_Fast(address+ INTERNAL_FLASH_PAGE_SIZE, pbuf + INTERNAL_FLASH_PAGE_SIZE/4);
FLASH_Lock_Fast();
__enable_irq();
}