stm32设置唯一MAC地址

stm32参考手册中指出,在地址为0x1FFFF7E8处,有一个唯一的身份标识寄存器。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以直接访问该值。

printf( "\r\nChip ID: %x, %x, %x\r\n", *(vu32*)(0x1ffff7e8), *(vu32*)(0x1ffff7e8+4), *(vu32*)(0x1ffff7e8+8));
Chip ID: 5d8ff39, 36364e4e, 43137403

虽然这个96bit的ID是唯一的,但是MAC地址却只有48bit,因为量产有不同批次,而且采购的很随机的话这个ID号也是不唯一的,比较靠谱一点的还是自己在指定FLASH位置定义一个变量,这样程序就写死去读这个地方的值,而这个地方的值我们再用别的方式去修改,如自己写个上位机用串口通信设置等。

uint32_t chipID __attribute__((at(0X800F000)))= 0x12345678;
	printf( "\r\nChip ID: %x\r\n", *(vu32*)(0X800F000));
	printf( "\r\nChip ID: %x\r\n", *(vu8*)(0X800F000));
	printf( "\r\nChip ID: %x\r\n", *(vu8*)(0X800F001));
	printf( "\r\nChip ID: %x\r\n", *(vu8*)(0X800F002));
	printf( "\r\nChip ID: %x\r\n", *(vu8*)(0X800F003));

这里使用了正点原子的脱机下载器,注释掉该定义变量,并在该处设置滚码。
在这里插入图片描述
开始烧录
在这里插入图片描述
串口显示如下:

Chip ID: 55550002

Chip ID: 2

Chip ID: 0

Chip ID: 55

Chip ID: 55

对应代码如下:

	printf( "\r\nChip ID: %x\r\n", *(vu32*)(0X800F000));
	printf( "\r\nChip ID: %x\r\n", *(vu8*)(0X800F000));
	printf( "\r\nChip ID: %x\r\n", *(vu8*)(0X800F001));
	printf( "\r\nChip ID: %x\r\n", *(vu8*)(0X800F002));
	printf( "\r\nChip ID: %x\r\n", *(vu8*)(0X800F003));

MAC地址的前12bit固定,后面的便可以直接如此自定义设置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值