欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
關于stm32f0單片機獲取唯一ID的一個好用的函數,可選擇長度
[打印本頁]
作者:
fx5700
時間:
2018-7-12 15:50
標題:
關于stm32f0單片機獲取唯一ID的一個好用的函數,可選擇長度
mbyte可以選擇4/8/12/16字節,方便不同項目使用,返回ID在mc_code里面保存
void GetMCCode(uint8_t mbyte,uint8_t *mc_code)
{
uint32_t Lock_Code;
uint32_t CpuID[3];
//獲取
CpuID[0]=*(__IO uint32_t*)(0x1ffff7ac);
CpuID[1]=*(__IO uint32_t*)(0x1ffff7b0);
CpuID[2]=*(__IO uint32_t*)(0x1ffff7b4);
//
if(mbyte==4)
{
Lock_Code=(CpuID[0]>>1)^(CpuID[1]>>2)^(CpuID[2]>>3);
mc_code[0] = (uint8_t)Lock_Code;
mc_code[1] = (uint8_t)(Lock_Code>>8);
mc_code[2] = (uint8_t)(Lock_Code>>16);
mc_code[3] = (uint8_t)(Lock_Code>>24);
}
else if(mbyte==8)
{
Lock_Code=(CpuID[0]>>1)^(CpuID[1]>>2)^(CpuID[2]>>3);
//
mc_code[0] = (uint8_t)Lock_Code;
mc_code[1] = (uint8_t)(Lock_Code>>8);
mc_code[2] = (uint8_t)(Lock_Code>>16);
mc_code[3] = (uint8_t)(Lock_Code>>24);
//
Lock_Code = ((CpuID[0]/10-1)*5) + (CpuID[1]>>5) + (CpuID[2]/9+2);
Lock_Code &= 0xFFFFF7FF;
//
mc_code[4] = (uint8_t)Lock_Code;
mc_code[5] = (uint8_t)(Lock_Code>>8);
mc_code[6] = (uint8_t)(Lock_Code>>16);
mc_code[7] = (uint8_t)(Lock_Code>>24);
}
else if(mbyte==12)
{
mc_code[0] = (uint8_t)CpuID[0];
mc_code[1] = (uint8_t)(CpuID[0]>>8);
mc_code[2] = (uint8_t)(CpuID[0]>>16);
mc_code[3] = (uint8_t)(CpuID[0]>>24);
//
mc_code[4] = (uint8_t)CpuID[1];
mc_code[5] = (uint8_t)(CpuID[1]>>8);
mc_code[6] = (uint8_t)(CpuID[1]>>16);
mc_code[7] = (uint8_t)(CpuID[1]>>24);
//
mc_code[8] = (uint8_t)CpuID[2];
mc_code[9] = (uint8_t)(CpuID[2]>>8);
mc_code[10]= (uint8_t)(CpuID[2]>>16);
mc_code[11]= (uint8_t)(CpuID[2]>>24);
}
else if(mbyte==16)
{
mc_code[0] = (uint8_t)CpuID[0];
mc_code[1] = (uint8_t)(CpuID[0]>>8);
mc_code[2] = (uint8_t)(CpuID[0]>>16);
mc_code[3] = (uint8_t)(CpuID[0]>>24);
//
mc_code[4] = (uint8_t)CpuID[1];
mc_code[5] = (uint8_t)(CpuID[1]>>8);
mc_code[6] = (uint8_t)(CpuID[1]>>16);
mc_code[7] = (uint8_t)(CpuID[1]>>24);
//
mc_code[8] = (uint8_t)CpuID[2];
mc_code[9] = (uint8_t)(CpuID[2]>>8);
mc_code[10]= (uint8_t)(CpuID[2]>>16);
mc_code[11]= (uint8_t)(CpuID[2]>>24);
//
Lock_Code = ((CpuID[0]/10-1)*5) + (CpuID[1]>>5) + (CpuID[2]/9+2);
Lock_Code &= 0xFFFFF7FF;
//
mc_code[12] = (uint8_t)Lock_Code;
mc_code[13] = (uint8_t)(Lock_Code>>8);
mc_code[14] = (uint8_t)(Lock_Code>>16);
mc_code[15] = (uint8_t)(Lock_Code>>24);
}
}
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1