#include "Config.h" #define DEBUGMSG printf #define CONFIG_START_ADDR 0x00300000 #define PAGE_SIZE 512 /**************************************** *函数名称:ISPEnable *输 入:无 *输 出:无 *功 能:ISP使能 ******************************************/ VOID ISPEnable(VOID) { Un_Lock_Reg(); ISPCON |= ISPEN; } /**************************************** *函数名称:ISPDisable *输 入:无 *输 出:无 *功 能:ISP禁能 ******************************************/ VOID ISPDisable(VOID) { Un_Lock_Reg(); ISPCON &= ~ISPEN; } /**************************************** *函数名称:ISPTriger *输 入:无 *输 出:无 *功 能:ISP触发 ******************************************/ VOID ISPTriger(VOID) { ISPTRG |= ISPGO; while((ISPTRG&ISPGO) == ISPGO); } /**************************************** *函数名称:ConfigEnable *输 入:无 *输 出:无 *功 能:Config使能 ******************************************/ VOID ConfigEnable(VOID) { Un_Lock_Reg(); ISPCON |= CFGUEN; } /**************************************** *函数名称:ConfigErase *输 入:无 *输 出:无 *功 能:Config区 擦除 ******************************************/ VOID ConfigErase(VOID) { ISPEnable(); ConfigEnable(); ISPCMD = PAGE_ERASE; ISPADR = CONFIG_START_ADDR; ISPTriger(); ISPDisable(); } /**************************************** *函数名称:Config0Write *输 入:无 *输 出:无 *功 能:Config0区 写 ******************************************/ VOID Config0Write(UINT32 unData) { ISPEnable(); ConfigEnable(); ISPCMD = PROGRAM; ISPADR = CONFIG_START_ADDR+0x00; ISPDAT = unData; ISPTriger(); ISPDisable(); } /**************************************** *函数名称:Config1Write *输 入:无 *输 出:无 *功 能:Config1区 写 ******************************************/ VOID Config1Write(UINT32 unData) { ISPEnable(); ConfigEnable(); ISPCMD = PROGRAM; ISPADR = CONFIG_START_ADDR+0x04; ISPDAT = unData; ISPTriger(); ISPDisable(); } /**************************************** *函数名称:Config0Read *输 入:无 *输 出:无 *功 能:Config0区 读 ******************************************/ UINT32 Config0Read(VOID) { UINT32 unData; ISPEnable(); ISPCMD = READ; ISPADR = CONFIG_START_ADDR+0x00; ISPTriger(); unData = ISPDAT; ISPDisable(); return unData; } /**************************************** *函数名称:Config1Read *输 入:无 *输 出:无 *功 能:Config1区 读 ******************************************/ UINT32 Config1Read(VOID) { UINT32 unData; ISPEnable(); ISPCMD = READ; ISPADR = CONFIG_START_ADDR+0x04; ISPTriger(); unData = ISPDAT; ISPDisable(); return unData; } #include "Config.h" /**************************************** *函数名称:main *输 入:无 *输 出:无 *功 能:函数主体 ******************************************/ INT32 main(VOID) { UINT32 unConfig0Read,unConfig1Read; PROTECT_REG ( PWRCON |= XTL12M_EN; //默认时钟源为外部晶振 while((CLKSTATUS & XTL12M_STB) == 0); //等待12MHz时钟稳定 CLKSEL0 = (CLKSEL0 & (~HCLK)) | HCLK_12M; //设置外部晶振为系统时钟 ) UartInit(12000000UL,9600); while(1) { DEBUGMSG("Config wirte and read test\r\n"); ConfigErase(); //配置区擦除 Config0Write(0xF8FFFF7F); //配置区写 Config1Write(0xEFFFFFFF); DEBUGMSG("Config0 wirte 0xF8FFFF7F\r\n"); DEBUGMSG("Config1 wirte 0xEFFFFFFF\r\n"); unConfig0Read=Config0Read(); //配置区读 unConfig1Read=Config1Read(); DEBUGMSG("Config0 read %X\r\n",unConfig0Read); DEBUGMSG("Config1 read %X\r\n",unConfig1Read); DEBUGMSG("\r\n\r\n"); Delayms(1000); } }
收藏0 举报
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
人才类勋章
发帖类勋章
等级类勋章
时间类勋章
36
363
1
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注电源系统设计
扫码关注21ic项目外包
扫码浏览21ic手机版
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才
京公网安备 11010802024343号