获取新塘单片机Nuvoton N76E003唯一识别码UID

2025-06-19 11:41:26

1、【1】打开集成开发环境 Keil uVision4并建立好相应的工程,选择好正确的厂商数据包和单片机型号。建立工程过于简单这里就不说了,不会的小伙伴们可以自行百度搜索,百度上有很多例子,总有一个适合你的。【2】设置输出.HEX文件。Option for target --> Output --> Creat HEX File勾选,就可以在编译时生成.HEX烧录文件。

获取新塘单片机Nuvoton N76E003唯一识别码UID
获取新塘单片机Nuvoton N76E003唯一识别码UID
获取新塘单片机Nuvoton N76E003唯一识别码UID

2、【1】打开新塘Nuvoton N76E003数据手册查看与UID相关的资料和IAP命令。读取UID是通过IAP指令来操作的。【2】第21章在应用编程(IAP)可以看到IAP命令。可以看到读取UID的地址是0X0000到0X000B,通过IAP就是读到UID。【3】第26章辅助功能可以看到96位序列号UID详细说明。

获取新塘单片机Nuvoton N76E003唯一识别码UID
获取新塘单片机Nuvoton N76E003唯一识别码UID

3、【1】编写串口初始化和配置函数。波特率115200pbs、8位数据位、 1位停止位、 无校验位。void InitialUART1_Timer3(u泌驾台佐32 u32Baudrate)//Initial UART1 Timer3{ P02_Quasi_Mode; //Setting UART pin as Quasi mode for transmit P16_Quasi_Mode; //Setting UART pin as Quasi mode for transmit SCON_1 = 0x50; //UART1 Mode1,REN_1=1,TI_1=1 T3CON = 0x08; //T3PS2=0,T3PS1=0,T3PS0=0(Prescale=1), UART1 in MODE 1 clr_BRCK; #ifdef FOSC_160000 RH3 = HIBYTE(65536 - (1000000/u32Baudrate)-1); //16 MHz RL3 = LOBYTE(65536 - (1000000/u32Baudrate)-1); #endif #ifdef FOSC_166000 RH3 = HIBYTE(65536 - (1037500/u32Baudrate)); //16.6 MHz RL3 = LOBYTE(65536 - (1037500/u32Baudrate)); #endif set_TR3; //Trigger Timer3 TI_1 = 1; //For printf function must setting TI = 1}char putchar (char c)//UART1 printf{ while (!TI_1);//wait until transmitter ready TI_1 = 0; SBUF_1 = c;//output character return (c);}【2】编写获取UID函数,并将UID通过串口打印出来。void vGet_MCU_UID(u8 *id)//vGet MCU UID{ u8 i = 0; GLOBAL_INTERRUPT_DISABLE; IAP_ENABLE; IAPAH = HIBYTE(MCU_UID_HEAD_ADDERSS); IAPAL = LOBYTE(MCU_UID_HEAD_ADDERSS); IAPCN = READ_UID; for(i=0; i<12; i++) { IAP_START_PROGRAMEE; id[i] = IAPFD; IAPAL++; } IAP_DISABLE; GLOBAL_INTERRUPT_ENABLE;}【3】编写简单的延时函数,顺便编写Keil相关的宏定义当兵通过串口打印出来。void delay(u8 i)//delay{ u8 x=0, y=0; for(x=0; x<250; x++) for(y=0; y<i; y++);}void vKeil_Macro_Information(void)//vKeil Macro Information{ printf("Keil Macro Information:\r\n"); printf("uVersion : 4.72.9.0\r\n"); printf("Date1 : %s\r\n", __DATE__); printf("Date2 : %s\r\n", __DATE2__); printf("Time : %s\r\n", __TIME__); printf("File : %s\r\n", __FILE__); printf("Line : %d\r\n", __LINE__); printf("Mode : %d\r\n", __MODEL__); printf("Stdc : %d\r\n", __STDC__); printf("uVersion C51 : %d\r\n", __C51__); printf("Build Time : %s %s\r\n", __DATE__, __TIME__);}【4】编写主函数。编译下载看结果。void main(void){ u8 i=0, datasID[12]={0}; Set_All_GPIO_Quasi_Mode; InitialUART1_Timer3(115200);//InitialUART1_Timer3 vKeil_Macro_Information();//vKeil Macro Information while(1) { vGet_MCU_UID(datasID);//vGet MCU UID for(i=0; i<12; i++) printf("%b02X ", datasID[i]); printf("\r\n"); delay(250); }}

获取新塘单片机Nuvoton N76E003唯一识别码UID
获取新塘单片机Nuvoton N76E003唯一识别码UID
获取新塘单片机Nuvoton N76E003唯一识别码UID
获取新塘单片机Nuvoton N76E003唯一识别码UID
获取新塘单片机Nuvoton N76E003唯一识别码UID
获取新塘单片机Nuvoton N76E003唯一识别码UID

4、将程序通过NuMicro ICP Programming Tool软件下载到单屡阽咆忌片机做,然后通过串口调试助手XCOM V2.0查看效果。Keil Macro Information:uVersion : 4.72.9.0Date1 : Jan 15 2019Date2 : 01/15/19Time : 15:40:55File : ..\User\main.cLine : 11799Mode : 535Stdc : 279uVersion C51 : 952Build Time : Jan 15 2019 15:40:5502 7E 2C 00 E1 EE 3C 03 B1 E1 00 0002 7E 2C 00 E1 EE 3C 03 B1 E1 00 00其中02 7E 2C 00 E1 EE 3C 03 B1 E1 00 00 为UID 正是我们所需要的

获取新塘单片机Nuvoton N76E003唯一识别码UID
获取新塘单片机Nuvoton N76E003唯一识别码UID
获取新塘单片机Nuvoton N76E003唯一识别码UID
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢