如何获得stm32 cpu的唯一ID

如何获得stm32 cpu的唯一ID,第1张

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 的序列号等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9438657.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存