STM32/GD32芯片信息

因为需要自动适配芯片进行系统配置,所以我们有必要通过读取一些系统寄存器来获取必要信息。 我们的代码需要兼容STM32F1/GD32F1/STM32F0/STM32F4 代码如下:

#ifdef STM32F0XX
        void* p = (void*)0x1FFFF7AC;
#else
        void* p = (void*)0x1FFFF7E8;
#endif
        memcpy(ID, p, ArrayLength(ID));

    CPUID = SCB->CPUID;
    uint MCUID = DBGMCU->IDCODE; // MCU编码。低字设备版本,高字子版本
        RevID = MCUID >> 16;
        DevID = MCUID & 0x0FFF;

        _Index = 0;
#ifdef STM32F0XX
    FlashSize = *(__IO ushort *)(0x1FFFF7CC);  // 容量
#else
    FlashSize = *(__IO ushort *)(0x1FFFF7E0);  // 容量
#endif

各常见芯片信息如下: STM32F030C8T6

SmartOS STM32F030C8 48MHz Flash:64k RAM:8k
DevID:0x0440 RevID:0x2000 
CPUID:0x410CC200 ARM ARMv6-M Cortex-M0 R0p0
ChipID:55-00-3E-00-04-57-32-4D-39-35-34-20
Heap :(0x200009a0, 0x200011a0) = 0x800
Stack:(0x200011a0, 0x20002000) = 0xe60

GD32F130C8T6

SmartOS GD32F130C8 48MHz Flash:64k RAM:8k
DevID:0x0410 RevID:0x1303 
CPUID:0x412FC231 ARM ARMv7-M Cortex-M3 R1p2
ChipID:26-49-31-39-31-33-30-32-32-32-33-32 &I1913022232
Heap :(0x200009a0, 0x200011a0) = 0x800
Stack:(0x200011a0, 0x20002000) = 0xe60

STM32F051C8T6

SmartOS STM32F030C8 48MHz Flash:64k RAM:8k
DevID:0x0440 RevID:0x2000 
CPUID:0x410CC200 ARM ARMv6-M Cortex-M0 R0p0
ChipID:22-00-21-00-11-57-36-41-36-33-32-20
Heap :(0x200009a0, 0x200011a0) = 0x800
Stack:(0x200011a0, 0x20002000) = 0xe60

GD32F150C8T6

SmartOS GD32F150C8 72MHz Flash:64k RAM:8k
DevID:0x0410 RevID:0x1303 
CPUID:0x412FC231 ARM ARMv7-M Cortex-M3 R1p2
ChipID:8F-14-31-39-31-33-30-32-32-32-33-32    8F141913022232
Heap :(0x20000678, 0x20000e78) = 0x800 (2k)
Stack:(0x20000e78, 0x20002000) = 0x1188 (4k)

STM32F103VET6

SmartOS STM32F103VE 72MHz Flash:512k RAM:64k
DevID:0x0414 RevID:0x1001 
CPUID:0x411FC231 ARM ARMv7-M Cortex-M3 R1p1
ChipID:38-FF-D4-FB-31-4E-36-30-36-66-01-43
Heap :(0x20000a30, 0x20004a30) = 0x4000
Stack:(0x20004a30, 0x20010000) = 0xb5d0

GD32F103VET6

SmartOS GD32F103VE 120MHz Flash:512k RAM:64k
DevID:0x0414 RevID:0x1309 
CPUID:0x412FC231 ARM ARMv7-M Cortex-M3 R1p2
ChipID:46-86-31-36-38-37-30-31-01-02-03-04 F�168701
Heap :(0x20000a30, 0x20004a30) = 0x4000
Stack:(0x20004a30, 0x20010000) = 0xb5d0

GD32F103VKT6

SmartOS GD32F103VK 120MHz Flash:3072k RAM:96k
DevID:0x0430 RevID:0x1309 
CPUID:0x412FC231 ARM ARMv7-M Cortex-M3 R1p2
ChipID:2A-58-36-35-34-31-31-33-32-30-32-34 *X6541132024
Heap :(0x20000a30, 0x20004a30) = 0x4000
Stack:(0x20004a30, 0x20018000) = 0x135d0

未解决问题: 1,有人说F0的ID只有32位,这个没有找到确切资料 2,GD芯片F130/F150没有读取得到DevID和RevID,而同为F0固件库的F030可以 3,STM32F103和GD32F103还有GD32F130/F150都可以通过0x1FFFF7E0读取得到内置闪存大小,而STM3F030不行,是不是因为这个是M3地址,而M0地址不同?如果130/150使用F0库缺使用M3地址,使用起来就麻烦了。 4,GD32F130/GD32F150上中断向量表映射到RAM的0x20000000失败,调用SYSCFG_MemoryRemapConfig配置SYSCFG->CFGR1为SYSCFG_MemoryRemap_SRAM后再读取发现没有生效,系统仍然使用Flash上的中断向量表。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏智能大石头

开发板通用刷机教程

    这是STM通用的刷固件方法,不仅仅适用于.Net Micro Framework,支持我们当前所有板子,包括阿波罗、探索者和雅典娜三个系列。     ...

52660
来自专栏linux驱动个人学习

NFC驱动调试

1.NFC基本概念: NFC 又称为近场通信,是一种新兴技术,可以在彼此靠近的情况下进行数据交换,是由非接触式射频识别(RFID)及互连互通技术整合演变而来,通...

75350
来自专栏点滴积累

OpenStack(企业私有云)万里长征第一步——安装

一、前言 单位新进了十几台服务器,建了一个高标准的一体化机房,状似刘姥姥进大观园的我,从机房规划到企业私有云搭建一一重头学来,除了机房泥墙其他基本都涉猎到了。 ...

59060
来自专栏雪胖纸的玩蛇日常

Vue+Django2.0 REST framework打造前后端分离的生鲜电商项目(三)设计数据库以及导入原始数据

53550
来自专栏FreeBuf

南海网络谍影 | F-Secure报告之木马NanHaiShu分析

声明:本文为F-Secure报告翻译,文中及的观点立场不代表本网站观点立场。 ? 1. 前言 本报告描述了我们发现并命名的木马-NanHaiShu(NanH...

27690
来自专栏Samego开发资源

玩玩树莓派之OS装机初始化

22280
来自专栏SAP最佳业务实践

SAP S/4HANA最佳业务实践:Order-to-Cash订单到收款-3合同处理

•The tile Manage Sales Contracts is part of the business catalog Sales –Contract...

39590
来自专栏杨建荣的学习笔记

GoldenGate数据迁移的问题总结(二)(r10笔记第85天)

昨天使用GoldenGate同步数据,数据量玩得有些大了。最后发现很多小问题变得更加严峻,比如空间问题。 而且由于没有更多的经验,导致这个问题被我引入了另外一个...

35190
来自专栏国产自主可控存储

深圳领存技术发布国产飞腾带自毁功能的存储阵列

4U飞腾FT-1500A存储服务器,24个2.5” SAS盘位,支持领存特制军工固态硬盘,具备一键物理自毁和一键逻辑自毁双重自毁功能,具备领存SSD与存储阵列绑...

58980
来自专栏信安之路

无线渗透(中)--WPS破解

15200

扫码关注云+社区

领取腾讯云代金券