34 lines
1.3 KiB
C
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();
|
|
}
|