- //加密后的CPUID
- volatile const static uint32 CPUIDEncrypt = 0xFFFFFFFF;
-
- //写入加密数据
- void WriteEncrypt(void)
- {
- //第一次烧写:将UID写入到Flash中
- if(CPUIDEncrypt==0xFFFFFFFF)
- {
- uint32_t CpuID[3];
- //获取CPU唯一的ID
- CpuID[0]=*(vu32*)(UID_BASE);
- CpuID[1]=*(vu32*)(UID_BASE+4);
- CpuID[2]=*(vu32*)(UID_BASE+8);
-
- //加密算法,很简单的加密算法
- uint32_t EncryptCode=(CpuID[0]>>3)+(CpuID[1]>>1)+(CpuID[2]>>2);
- FLASH_Unlock();
- FLASH_ClearFlag(FLASH_FLAG_BSY|FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPRTERR);
- FLASH_ProgramWord((uint32_t)&CPUIDEncrypt, EncryptCode);
- FLASH_Lock();
- }
- }
- //判断加密
- bool JudgeEncrypt(void)
- {
- uint32_t CpuID[4];
- //获取CPU唯一的ID
- CpuID[0]=*(vu32*)(UID_BASE);
- CpuID[1]=*(vu32*)(UID_BASE+4);
- CpuID[2]=*(vu32*)(UID_BASE+8);
- //加密算法,很简单的加密算法
- CpuID[3]=(CpuID[0]>>3)+(CpuID[1]>>1)+(CpuID[2]>>2);
- //检查Flash中的UID是否合法
- return (CPUIDEncrypt == CpuID[3]);
- }
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/1139.html