新手上路
- 积分
- 27
- 金钱
- 27
- 注册时间
- 2016-3-8
- 在线时间
- 4 小时
|
2金钱
不是操作流程,而是下载软件对单片机Flash的操作过程。是否会对flash的值全部置1?
是这样的,我在学习对单片机的代码加密,里面有一段代码如下:
#define EcchryptionIDADDR 0x08003800 ///芯片加密ID存储位置
#define PrimaryCode 0xFFFFFFFF ///芯片ID存储点原始密码
CpuID[0]=STMFLASH_ReadWord(0x1ffff7e8);
CpuID[1]=STMFLASH_ReadWord(0x1ffff7ec);
CpuID[2]=STMFLASH_ReadWord(0x1ffff7f0);
/**********芯片ID加密算法*****************/
Lock_Code=(CpuID[0]>>1)+(CpuID[1]>>3)+(CpuID[2]>>5);
ExistID=STMFLASH_ReadWord(EcchryptionIDADDR);///读取已存加密ID
if(ExistID==Lock_Code) //若处理后的芯片ID==已存ID
{
printf("芯片ID正确\r\n");
}
else if(ExistID==0xFFFFFFFF) //若处理后的芯片ID==初始ID ZHONGDIAN:重点!为什么初始ID等于0xFFFFFFFF?????????
{
printf("芯片初次使用\r\n");
FLASH_Unlock();///解锁FLASH
// FLASH_EraseOptionBytes();
FLASH_ErasePage(EcchryptionIDADDR);//擦除2K
FLASH_ProgramWord(EcchryptionIDADDR, Lock_Code);//将加密后的芯片唯一ID存入FLASH
}
else //防盗处理
{
printf("芯片锁死\r\n");
while(1);
}
|
|