/*---------------------------------------------------------------------------------------------------------*/
/* */
/* SPDX-License-Identifier: Apache-2.0 */
/* Copyright(c) 2023 Nuvoton Technology Corp. All rights reserved. */
/* */
/*---------------------------------------------------------------------------------------------------------*/
//***********************************************************************************************************
// File Function: MS51 IAP program LDROM demo code
//***********************************************************************************************************
#include "MG51_SDCC.H"
/*---------------------------------------------------------------
// Following define by customer
// Please confirm the start addresss not over your code size
//---------------------------------------------------------------*/
#define DATA_SIZE 1024
#define DATA_START_ADDR 0x0000
void main (void)
{
unsigned char i;
MODIFY_HIRC(HIRC_24);
Enable_UART0_VCOM_printf_24M_115200();
printf ("\n Toggle P12 to low to start test ...");
P12_QUASI_MODE;
for (i=0;i<128;i++)
IAPDataBuf[i]=i;
while(P12);
Erase_LDROM(DATA_START_ADDR,128);
Erase_Verify_LDROM(DATA_START_ADDR,128);
Program_LDROM(DATA_START_ADDR,128);
Program_Verify_LDROM(DATA_START_ADDR,128);
while(1);
}
//-----------------------------------------------------------------------------------------------------------
程序功能
这是一个针对 MS51 单片机(MG51系列) 的 IAP(在应用编程) 示例代码,演示如何对 LDROM(引导加载区) 进行擦除和编程操作。
代码详细解析
1. 头文件和宏定义
#include "MG51_SDCC.H" // 包含 MS51 的头文件
#define DATA_SIZE 1024 // 定义数据大小(未实际使用)
#define DATA_START_ADDR 0x0000 // 定义操作起始地址(LDROM 起始地址)
MG51_SDCC.H 提供了 MS51 的寄存器定义和库函数。
宏定义了操作的数据大小(1024字节)和起始地址(0x0000),但实际代码中只操作了前128字节。
准备测试数据
for (i=0; i<128; i++)
IAPDataBuf[i] = i; // 填充缓冲区(0x00~0x7F)
在 IAPDataBuf(IAP 数据缓冲区)中填入 0~127(0x00~0x7F) 的递增数据。
|