STM32 之 Unique_Device_ID
包含函数:
(1)Main
C语言:Codee#14694
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 实验平台 : ST 官方三合一套件
+ 硬件 : STM32F103C8T6
+ 开发平台 : IAR For ARM 5.40
+ 仿真器 : J-Link
+ 日期 : 2010-10-28
+ 频率 :HSE = 8MHz ,主频 = 72MHz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
#include "includes.h"
/*******************************************************************************
== 变量声明 ==
*******************************************************************************/
/*******************************************************************************
== Main 函数 ==
*******************************************************************************/
voidmain(void)
{
RCC_Configuration();//配置系统时钟
NVIC_Configuration();//配置 NVIC 和 Vector Table
SysTick_Config();//配置SysTick的精确延时
GPIO_Configuration();
UART1_Configuration();
LED1_HIGH;LED2_HIGH;LED3_HIGH;LED4_HIGH;// 初始化让灯全灭
//=== 通过串口发送芯片ID号 ======================================
Uart1_PutString(" The Unique Device ID is : ",27);
Show_Unique_Device_ID();
while(1);
}
()Unique_Device_ID.c
C语言:Codee#14695
#include "includes.h"
voidShow_Unique_Device_ID(void)
{
u32Dev_Serial0,Dev_Serial1,Dev_Serial2;
Dev_Serial0=*(vu32*)(0x1FFFF7E8);
Dev_Serial1=*(vu32*)(0x1FFFF7EC);
Dev_Serial2=*(vu32*)(0x1FFFF7F0);
// 至此 已经从内存获取了Unique_Device_ID 用3个32位的变量
u8HEX[6]={A,B,C,D,E,F};
u8Unique_Device_ID[25];
Unique_Device_ID[24]=\0;
u8HexTmp,H_HexTmp,L_HexTmp;
for(u8i=0;i<24;)
{
if(0==i)HexTmp=(u8)Dev_Serial0;//获取第一个字节
elseif(2==i)HexTmp=(u8)(Dev_Serial0>>8);//获取第二个字节
elseif(4==i)HexTmp=(u8)(Dev_Serial0>>16);//获取第三个字节
elseif(6==i)HexTmp=(u8)(Dev_Serial0>>24);//获取第四个字节
elseif(8==i)HexTmp=(u8)Dev_Serial1;//获取第五个字节
elseif(10==i)HexTmp=(u8)(Dev_Serial1>>8);//获取第六个字节
elseif(12==i)HexTmp=(u8)(Dev_Serial1>>16);//获取第七个字节
elseif(14==i)HexTmp=(u8)(Dev_Serial1>>24);//获取第八个字节
elseif(16==i)HexTmp=(u8)Dev_Serial2;//获取第九个字节
elseif(18==i)HexTmp=(u8)(Dev_Serial2>>8);//获取第十个字节
elseif(20==i)HexTmp=(u8)(Dev_Serial2>>16);//获取第十一个字节
elseif(22==i)HexTmp=(u8)(Dev_Serial2>>24);//获取第十二个字节
H_HexTmp=HexTmp>>4;//获取高四位
L_HexTmp=HexTmp&0x0F;//获取低四位
// 如果某四位的值大于9 就使用查表的方式 把ABCDEF写进来 呵呵
if(L_HexTmp>9)
Unique_Device_ID[i+1]=HEX[L_HexTmp-10];
else
Unique_Device_ID[i+1]=L_HexTmp+0;
if(H_HexTmp>9)
Unique_Device_ID[i+0]=HEX[H_HexTmp-10];//说明一下 貌似论坛过滤了这个符号 所以 我在代码里面+0了 呵呵
else
Unique_Device_ID[i+0]=H_HexTmp+0;
i+=2;
}
// 通过串口发送出去
Uart1_PutString(Unique_Device_ID,strlen((char*)Unique_Device_ID));
Uart1_PutString("\r\n",strlen("\r\n"));
}
STM32Unique_Device_I 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)