RED_UID.rar
2015-8-27 22:27 上传
点击文件名下载附件
213.02 KB, 下载次数: 213
收藏0 举报
#include "SmartM_M0.h" #define PAGE_SIZE 512 #define FLASH_START_ADDRESS 0x00000000 #define FLASH_SIZE 0x00010000 /**************************************** *函数名称:ISPTriger *输 入:无 *输 出:无 *功 能:ISP执行 ******************************************/ VOID ISPTriger(VOID) { ISPTRG |= ISPGO; while((ISPTRG&ISPGO) == ISPGO); } /**************************************** *函数名称:ISPEnable *输 入:无 *输 出:无 *功 能:ISP使能 ******************************************/ VOID ISPEnable(VOID) { ISPCON |= ISPEN|CFGUEN|LDUEN; } /**************************************** *函数名称:ISPDisable *输 入:无 *输 出:无 *功 能:ISP禁用 ******************************************/ VOID ISPDisable(VOID) { ISPCON &= ~(ISPEN|CFGUEN|LDUEN); } /**************************************** *函数名称:FMC_Erase *输 入:unPage 页地址 *输 出:无 *功 能:数据区擦除 ******************************************/ VOID FMC_Erase(UINT32 unAddr) { PROTECT_REG( ISPEnable(); ISPCMD = PAGE_ERASE; ISPADR = unAddr; ISPTriger(); ISPDisable(); ) } /**************************************** *函数名称:FMC_Write *输 入:pucBuf 写数据缓冲区 unSize 写数据大小 *输 出:无 *功 能:数据区写 ******************************************/ VOID FMC_Write(UINT32 unAddr,UINT8 *pucBuf,UINT32 unSize) { UINT32 i; PROTECT_REG( ISPEnable(); ISPCMD = PROGRAM; for(i=0; i<unSize; i+=4) { ISPADR = (i+unAddr); ISPDAT = *(UINT32 *)(&pucBuf[i]); ISPTriger(); } ISPDisable(); ) } /**************************************** *函数名称:FMC_Read *输 入:pucBuf 读数据缓冲区 unSize 读数据大小 *输 出:无 *功 能:数据区读 ******************************************/ VOID FMC_Read(UINT32 unAddr,UINT8 *pucBuf,UINT32 unSize) { UINT32 i; PROTECT_REG( ISPEnable(); ISPCMD = READ; for(i=0; i<unSize; i+=4) { ISPADR = (i+unAddr); ISPTriger(); *(UINT32 *)(&pucBuf[i])=ISPDAT; } ISPDisable(); ) } UINT32 Read_UID(UINT32 unAddr) { UINT32 UIDX; PROTECT_REG( ISPEnable(); ISPCMD = READ_UID; ISPADR =unAddr; ISPTriger(); *(UINT32 *)(&UIDX)=ISPDAT; ISPDisable(); ) return UIDX; } /**************************************** *函数名称:main *输 入:无 *输 出:无 *功 能:函数主体 ******************************************/ INT32 main(VOID) { /*1.MCU频率初始化,频率为50MHz*/ McuInit(MCU_FREQUENCY); /*2.串口初始化,波特率为115200bps*/ UartInit(115200); Delayms(1000); while(1) { printf("\r\nCPU ID = %X\r\n",Read_UID(0X00));//全球唯一ID码64-96位 printf("\r\nCPU ID = %X\r\n",Read_UID(0X04));//全球唯一ID码32-64位 printf("\r\nCPU ID = %X\r\n",Read_UID(0X08));//全球唯一ID码0-32位 Delayms(1000); } }
wahahaheihei 发表于 2015-10-24 13:57 FMC这个函数相关的都是什么东西啊,没有看到在程序里使用锕
天灵灵地灵灵 发表于 2015-10-23 22:14UINT32 Read_UID(UINT32 unAddr){ UINT32 UIDX;
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
人才类勋章
5
39
0
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注电源系统设计
扫码关注21ic项目外包
扫码浏览21ic手机版
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才
京公网安备 11010802024343号