你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32F1xx系列单片机通过程序获取MCU信息

[复制链接]
STMCU小助手 发布时间:2022-3-21 13:42
       在使用STM32F1xx系列单片机时可以直接在指定地址中读取单片机相关信息,在参考手册上的相关介绍如下。

W4$UBSQXMP8D~9D%JGAARDG.png

G6XSMX4J)IM@GZH`UCUR6P0.png

7XGPF5P6$~_EL8)2JD9WXM8.png

@{(UBRDLPT$EQVZL_$OMDS5.png

KJSU6D{XF4FV$]AMX~T7}.png

通过上面的介绍可以看到,直接去这些指定地址中读取数据,就可以获取到MCU的相关信息。下来就直接通过代码去获取这些信息。

  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"

  5. u32 flash_id[4];
  6. u16 flash_size;
  7. u32 mcu_id;

  8. int main( void )
  9. {
  10.     while( 1 )
  11.     {
  12.         flash_size = *( unsigned  int * )( 0x1FFFF7E0 );        //闪存容量

  13.         flash_id[0] = *( unsigned  int * )( 0x1FFFF7E8 + 0x00 );        //ID 0-31
  14.         flash_id[1] = *( unsigned  int * )( 0x1FFFF7E8 + 0x04 );        //ID 32-63
  15.         flash_id[2] = *( unsigned  int * )( 0x1FFFF7E8 + 0x08 );        //ID 64-95

  16.         mcu_id =  *( unsigned  int * )( 0xE0042000 );        //MCU ID
  17.     }
  18. }
复制代码

通过指针,直接在地址中去读取数据,通过单步调试,观察读取到的值,和单片机内存中的值是否一致。

I@MMXPK@EL)L_3I`5WCRDHN.png

通过观察中的变量值和单片机内存中的值对比,可以看出,读出的数据和内存中数据一致。

读出单片机的内存大小为0x0040,换算为10进制数为64。通过上面的闪存容量寄存器的介绍可以知道,闪存容量是以K为单位的,说明当前单片机的容量为64K,测试用的单片机型号为STM32F103C8T6,容量正好是64K。说明读取的数据和实际情况是一致的。

读出的96bit的设备 ID号和内存中的内容也一样,说明已经正确的获取到了设备的 ID编号。

TTAS)IT{ZNYWPXXX08R$Y.png

通过mcu_id的值0x20036410可以看出,芯片的版本为0x2003,是中等容量产品,版本为 Y。它的设备编码为410。



收藏 评论0 发布时间:2022-3-21 13:42

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版