STM32每一个芯片内部都有一个唯一的96位的ID号,可以通关过以下方式进行读取:
由于唯一ID是一个96位的数据,所以你要创建3个32位变量用于存储ID号
static u32 CpuID[3];
接着执行读取函:
void GetLockCode(void)
{
//获取CPU唯一ID
CpuID[0]=(vu32)(0x1ffff7e8);
CpuID[1]=(vu32)(0x1ffff7ec);
CpuID[2]=(vu32)(0x1ffff7f0);
}
数就可以了。
早期的CPUID功能只要一个功能ID参数(eax),这时使用__cpuid函数。后来CPUID的功能扩展,又加了一个子功能ID(ecx)参数,这时用__cpuidex。
64位环境下包含 <intrinh>后直接调用两个系统库函数即可。
示例代码如下:
procedure TForm1Button1Click(Sender: TObject);type
TCPUID = array[14] of longint;
function GetCPUID: TCPUID;
asm
PUSH EBX
PUSH EDI
MOV EDI,EAX
MOV EAX,1
DW $A20F
STOSD
MOV EAX,EBX
STOSD
MOV EAX,ECX
STOSD
MOV EAX,EDX
STOSD
POP EDI
POP EBX
end;
var
aCpuId: TCpuID;
begin
aCpuId := GetCPUID;
ShowMessage('CPU 序列号是: ' + IntToHex(aCpuId[4],8) + IntToHex(aCpuId[1],8));
end;
代码运行截图:
与实际的对比:
Dim MemoyCounter As New ComputerInfo()
Dim CPUCounter As New PerformanceCounter("Processor", "% Processor Time", "_Total")
Private Sub Timer1_Tick(ByVal sender As SystemObject, ByVal e As SystemEventArgs) Handles Timer1Tick
Dim CPU As Double = CPUCounterNextValue
Dim neicun As Double = (MemoyCounterTotalPhysicalMemory - MemoyCounterAvailablePhysicalMemory) / MemoyCounterTotalPhysicalMemory 100%
获取CPU及物理内存使用率
以上就是关于如何获得stm32 cpu的唯一ID全部的内容,包括:如何获得stm32 cpu的唯一ID、在DOS下怎么试用CPUID指令获取CPU信息、如何用 DELPHI 获取 CPU 的序列号等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)