- /*---------------------------------------------------------------------------------------------------------*/
- /* */
- /* 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) 的递增数据。
|