欧美极品高清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