当前位置: 首页 > news >正文

网站建设 开发人一丶一一人一一壹六八信息科技网站建设

网站建设 开发人一丶一一人一一,壹六八信息科技网站建设,哪里有seo排名优化,开源商城网站获取唯一设备标识符UID前言一、什么事UID二、实验过程1.CubeMx配置2.代码实现3.实验结果总结前言 这一章节介绍如何获取STM32芯片中的唯一的ID号的两种方法。 一、什么事UID 在许多项目中,识别设备是必要的。从简单的设备描述到更复杂的设备,如 USB 串…

获取唯一设备标识符UID

  • 前言
  • 一、什么事UID
  • 二、实验过程
    • 1.CubeMx配置
    • 2.代码实现
    • 3.实验结果
  • 总结


前言

这一章节介绍如何获取STM32芯片中的唯一的ID号的两种方法。


一、什么事UID

在许多项目中,识别设备是必要的。从简单的设备描述到更复杂的设备,如 USB 串行命名、安全密钥、加密密钥等。有许多方法可以在微控制器中实现唯一ID。从简单的硬编码到固件中,单独刷新信息闪存到设备首次运行时随机生成。当谈到STM32 MCU时,还有另一种更简单,更清晰的可能性。在制造过程中,96位ID被编码到微控制器上。

所谓的唯一 ID 由 3 个部分组成:

  1. 晶圆上的 X 和 Y 坐标以 BCD 格式表示
  2. 批号
  3. 晶圆编号

对于 UID 访问,您只需在指定地址读取内存。请记住,不同的MCU线在内存中具有此数据扇区的不同位置。在这篇文章的最后,我将总结其中的大部分。

由于STM32是32位处理器,我们必须执行三次32位偏移的读出,以获得完整的92位ID。当然,我们只能使用其中的一部分。

例如,STM32F0处理器的起始地址是0x1FFFF7AC。因此,要读取完整的 UID,我们必须读取以下地址:

#define ID1 (*(unsigned long *)0x1FFFF7AC)
#define ID2 (*(unsigned long *)0x1FFFF7B0)
#define ID3 (*(unsigned long *)0x1FFFF7B4)

我们还可以将起始地址定义为数组的开头:

unsigned long *id = (unsigned long *)0x1FFFF7AC;
id[0]
id[1]
id[2]

由于STM32中的无符号长整型是一个32位变量,因此按索引访问数组会导致索引*32位偏移与起始地址。
您可以在下面找到大多数STM32微控制器的唯一ID起始地址。
在这里插入图片描述

二、实验过程

这里Cubex配置非必须,主要是为了打印出UID,所以可以使用前面实验的代码

1.CubeMx配置

选择芯片stm32f103c6t6,新建工程

在这里插入图片描述

设置时钟源,最小系统外部晶振8Mhz,作为外部高速HSE时钟源。由于没有外接外部低速晶振,这里低速时钟源选择旁路时钟源。

在这里插入图片描述

配置时钟树,这里使用官方推荐的配置

在这里插入图片描述

CubeMX配置如下:
在这里插入图片描述
USART1的参数配置如下,波特率115200,传输数据长度为8 Bit,奇偶检验无,停止位1.其他参数默认
在这里插入图片描述

SYS选项卡中Debug选项选择串口(这个选项可以设置,不会有影响)
在这里插入图片描述

Code Generator中设置只拷贝使用到的库,分离.c和.h文件

在这里插入图片描述

设置好项目名称和路径,点击GENERATE CODE即可,生成后使用keil5 IDE打开。

在这里插入图片描述

2.代码实现

两种获取方式如下:

int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_DMA_Init();MX_USART1_UART_Init();/* USER CODE BEGIN 2 *///方法一uint32_t uid[3];uid[0] = (uint32_t)(READ_REG(*((uint32_t *)UID_BASE)));uid[1] = (uint32_t)(READ_REG(*((uint32_t *)(UID_BASE + 4U))));uid[2] = (uint32_t)(READ_REG(*((uint32_t *)(UID_BASE + 8U))));for(int8_t i = 0; i < 3; i++) {printf("%x \r\n", uid[i]);}   printf("===========================================\r\n"); //方法二uint32_t *id = (uint32_t *)0x1FFFF7E8;for(int8_t i = 0; i < 3; i++) {printf("%x \r\n", *(uint8_t *(id+i));}   printf("\r\n"); /* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}

3.实验结果

这里打印的结果大家可能不同,这是正常的,相同才不正常

46528358 
46528358 

总结

本章简单介绍了获取STM32唯一设备标识符UID的方法。

http://www.yayakq.cn/news/169609/

相关文章:

  • 郑州网站建设seo优化国外 家具 网站模板下载
  • 机械配件东莞网站建设wordpress 签到 排行
  • 宜昌网站建设市场网站建设公司 电话销售没什么效果
  • 建设一个视频教学网站注册网站免费注册qq邮箱
  • 济南网站开发培训班长沙建网站需要多少钱
  • 工信部网站备案查通知网站建设 数据库连接
  • 电子商务网站建设中应注意哪些问题东华建设官方网站
  • 西宁做网站君博解决网站开发电脑
  • 做爰xo的视频网站试看社群营销的案例
  • 网站建设的快乐seo文章关键词怎么优化
  • ps做产品的网站医疗器械软件开发流程
  • 莆田建设企业网站珠海网站艰涩和
  • 纯静态网站是有什么程序做的wordpress采集后seo
  • 可做外链的网站药类网站整站模板下载
  • 西安网站开发培训价格公众号开发单位
  • 深圳网站制作建设二级建造师注册查询
  • 网站建设gzzhixun上海优化关键词的公司
  • 从哪些方面进行网站建设百度网址大全下载到桌面
  • 公司为什么要做网站eclipse开发网站开发
  • 深圳网站seo 乐云践新个人网站设计与制作源代码
  • 受欢迎的天津网站建设网站设计风格分类
  • 微信公众号里的网站怎么做的英文外贸网站
  • 为什么网站用静态页面基于jsp网站开发与实现
  • 网站开发合同模板免费wordpress主题源文件
  • 轻定制网站建设中小企业网贷平台
  • 东营可以做网站的公司在哪wordpress调用某指定分类栏目
  • 网站编辑工具做网站的客户哪里找
  • 网站建设与维护合同范本武侯区旅游网站建设
  • 第四章第二节网站建设的教学设计附近网络维修
  • 建设银行档案管理网站河源网站搭建费用