| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- /***************************************************************
- *Copyright (C), 2017, Shanghai Eastsoft Microelectronics Co., Ltd.
- *文件名:
- *作 者: Liut
- *版 本: V1.00
- *日 期: 2017/07/14
- *描 述:
- *备 注: 适用于 ES8P508芯片
- 本软件仅供学习和演示使用,对用户直接引用代码所带来的风险或后果不承担任何法律责任。
- ***************************************************************/
- #include "lib_iap.h"
- /*************************************************
- * @brief IAP 页擦除编程.回调固化在ROM中的程序
- * @param address: 页首地址
- * @retval None
- ***********************************************/
- ErrorStatus IAP_PageErase(uint32_t address)
- {
- IAP_PE IAPPageErase = (IAP_PE)(*(uint32_t *)IAP_PageErase_addr);
- ErrorStatus result;
- __ASM("CPSID i");
- result = (*IAPPageErase)(address);
- __ASM("CPSIE i");
- return result;
- }
- /*************************************************
- * @brief IAP 单字自编程.回调固化在ROM中的程序
- * @param address: 编程首地址
- * @param data: 编程数据
- * @retval None
- ************************************************/
- ErrorStatus IAP_WordProgram(uint32_t address, uint32_t data)
- {
- IAP_WP IAPWordProgram = (IAP_WP)(*(uint32_t *)IAP_WordProgram_addr);
- ErrorStatus result;
- __ASM("CPSID i");
- result = (*IAPWordProgram)( address, data);
- __ASM("CPSIE i");
- return result;
- }
- /************************************************
- * @brief IAP 多字自编程.回调固化在ROM中的程序
- * @param address: 编程首地址
- * @param data[]: 编程数据
- * @param length: 编程数据长度(字节)
- * @param address: 编程页是否先擦除
- * @arg 0: 不擦除
- * @arg 1: 擦除
- * @retval None
- **********************************************/
- ErrorStatus IAP_PageProgram(uint32_t address, uint32_t data[], uint32_t length, uint32_t erase) //@0x100001c5
- {
- IAP_PP IAPPageProgram = (IAP_PP)(*(uint32_t *)IAP_PageProgram_addr);
- ErrorStatus result;
- __ASM("CPSID i");
- result = (*IAPPageProgram)(address,data,length,erase);
- __ASM("CPSIE i");
- return result;
- }
- /*************************************
- 函数名:IARead
- 描 述:Flash读
- 输入值:内存地址--读取数据的存放地址
- Flash地址
- 读取数据的长度,单位为字(4字节)
- 返回值:成功/失败
- **************************************/
- ErrorStatus IAPRead(uint32_t *Ram_Addr, uint32_t Flash_Addr, uint8_t Len)
- {
- uint8_t i;
- uint32_t *ram_addr;
- const uint32_t *flash_addr;
- ram_addr = Ram_Addr;
- flash_addr = (const uint32_t *)Flash_Addr;
- if (Len == 0)
- return ERROR;
- for (i = 0; i < Len; ++i)
- {
- *ram_addr = *flash_addr;
- ++ram_addr;
- ++flash_addr;
- }
- return SUCCESS;
- }
- /************************END OF FILE**************************/
|