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

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

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

. a/ e; h7 _' c7 v  H W4$UBSQXMP8D~9D%JGAARDG.png
. g. q( s* |- y- w
7 X6 l) f. Y7 d1 C3 a! e: h G6XSMX4J)IM@GZH`UCUR6P0.png 3 [$ w0 w6 v0 G0 N5 K
7 q1 B4 R0 f' ~
7XGPF5P6$~_EL8)2JD9WXM8.png
3 \- m+ C: ~6 S* e1 A( d% u$ d: D2 \2 [4 V3 n
@{(UBRDLPT$EQVZL_$OMDS5.png   ~3 R6 j( @" a6 C" ]' @& X

  p1 g- G  J) l6 w KJSU6D{XF4FV$]AMX~T7}.png
% T1 f* N$ C1 j
* o" H6 w* ?) a通过上面的介绍可以看到,直接去这些指定地址中读取数据,就可以获取到MCU的相关信息。下来就直接通过代码去获取这些信息。
$ K9 @$ I1 o7 M+ G9 g0 u
8 p$ R* Z  z* k, u; l
  1. #include "sys.h"
    * Y+ I1 L; e; L0 @  e0 @
  2. #include "delay.h"( X/ ]0 ]4 O0 _' ^- F
  3. #include "usart.h"$ I* X* Q% J$ }" V+ K7 Q5 H
  4. #include "led.h"
      e. D& Q, f, R

  5. ' P: X3 X7 N6 _1 k7 I: O# N
  6. u32 flash_id[4];+ @* T' x% o+ A; T
  7. u16 flash_size;
    + p0 ^2 X7 F" I
  8. u32 mcu_id;
    $ A+ i5 U& Y" o5 D  u

  9. 3 F; b; d# l$ f" e7 C* V
  10. int main( void )9 a. M' U* U8 d" Z* B8 `
  11. {
    $ K& d! a  G1 |9 i6 e
  12.     while( 1 )4 _8 C/ P9 ~- }+ i3 c8 {
  13.     {! ^/ b' s: ~4 P. [
  14.         flash_size = *( unsigned  int * )( 0x1FFFF7E0 );        //闪存容量
    3 _0 ?9 k: [* U% _

  15. $ f9 e6 ~; X& A5 C' K  Y
  16.         flash_id[0] = *( unsigned  int * )( 0x1FFFF7E8 + 0x00 );        //ID 0-31) l7 a& q1 [- m  l; Q0 y
  17.         flash_id[1] = *( unsigned  int * )( 0x1FFFF7E8 + 0x04 );        //ID 32-634 y7 u# v6 }* Q% J  u9 h
  18.         flash_id[2] = *( unsigned  int * )( 0x1FFFF7E8 + 0x08 );        //ID 64-95
    " T5 V+ }7 J0 z$ I5 }
  19.   L5 _+ o" g3 i" _  k0 i: H: x
  20.         mcu_id =  *( unsigned  int * )( 0xE0042000 );        //MCU ID/ s' H/ M! h9 \( M3 `. A
  21.     }3 L/ k% B  @" p' L$ A5 F( E
  22. }
复制代码

0 Y; e/ f8 H3 n+ }( M9 i4 \通过指针,直接在地址中去读取数据,通过单步调试,观察读取到的值,和单片机内存中的值是否一致。
, W7 E: |9 Z6 _( x5 ^6 m0 \# \; w, i  ]3 p2 q6 j
I@MMXPK@EL)L_3I`5WCRDHN.png
3 N4 r+ u, g8 G
( c9 n$ r, x) d* X通过观察中的变量值和单片机内存中的值对比,可以看出,读出的数据和内存中数据一致。
$ J+ z5 P3 V7 ]. ~" \( m
& s% X/ r) N+ s读出单片机的内存大小为0x0040,换算为10进制数为64。通过上面的闪存容量寄存器的介绍可以知道,闪存容量是以K为单位的,说明当前单片机的容量为64K,测试用的单片机型号为STM32F103C8T6,容量正好是64K。说明读取的数据和实际情况是一致的。
+ d1 u3 X! I) H) z" C0 h
4 k, i  [/ a  s1 T" ?" P, j读出的96bit的设备 ID号和内存中的内容也一样,说明已经正确的获取到了设备的 ID编号。
- ~7 E2 Y. h( E/ l( |& J& A) k( ]6 c
TTAS)IT{ZNYWPXXX08R$Y.png ! I4 J" d: C7 k% C9 u9 Z0 k
) a! ]6 K) l) ]) |% r& q. t( h
通过mcu_id的值0x20036410可以看出,芯片的版本为0x2003,是中等容量产品,版本为 Y。它的设备编码为410。
. M' U( |. ], H, w* `2 [# T8 M* h! U( q; }! |% v! C" {. Z/ d

* H. u' f" L7 }7 N$ i' E1 k8 w7 B' |; \5 a7 j- p+ {
赞 收藏 评论0 发布时间:2022-3-21 13:42

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版