源: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 >> ;
DevID = MCUID & 0x0FFF; _Index = ;
#ifdef STM32F0XX
FlashSize = *(__IO ushort *)(0x1FFFF7CC); // 容量
#else
FlashSize = *(__IO ushort *)(0x1FFFF7E0); // 容量
#endif

各常见芯片信息如下:

STM32F030C8T6

SmartOS STM32F030C8 48MHz Flash:64k RAMk
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
Stack0x200011a0, 0x20002000) = 0xe60

GD32F130C8T6

SmartOS GD32F130C8 48MHz Flash:64k RAMk
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
Stack0x200011a0, 0x20002000) = 0xe60

STM32F051C8T6

SmartOS STM32F030C8 48MHz Flash:64k RAMk
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 RAMk
DevID:0x0410 RevID:0x1303
CPUID:0x412FC231 ARM ARMv7-M Cortex-M3 R1p2
ChipIDF-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上的中断向量表。

STM32/GD32芯片信息(转)的更多相关文章

  1. STM32/GD32芯片信息

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

  2. stm32——NFC芯片--PN532的使用

    stm32——NFC芯片--PN532的使用 一.NFC简介 NFC(Near Field Communication)近场通信,是一种短距高频的无线电技术,在13.56MHz频率运行于20厘米距离内 ...

  3. GD32芯片移植完全攻略

    GD32是国产兆易创新公司生产的完全兼容STM32系列的Cortex-M3处理器,具有几大亮点:1,高主频108MHz.性能提升30%以上,可超频到120MHz2,Flash零等待.STM32的72M ...

  4. STM32系列芯片命名规范

    1.STM32的基础知识 STM32是意法半导体公司,基于ARM Cortex®-M0,M0+,M3, M4和M7内核生产的系列通用MCU.截止当前时间为止(20190515),STM32有STM32 ...

  5. VScode开发STM32/GD32单片机-MakeFile工程JlinkRTT配置

    本次使用开发板为STM32F401CCU6,使用CubeMX配置一个Makefile工程 配置时候为内部时钟 工程选择makefile工程类型 只生成需要的文件 用VSCode打开后显示很多波浪线 选 ...

  6. VScode开发STM32/GD32单片机-环境搭建

    1.软件下载 1.1.安装VSCode 1.2.下载安装VisualGDB 1.3.下载安装mingwin64 1.4.下载安装OpenOCD 1.5.下载GNU Arm Embedded Toolc ...

  7. STM32/GD32上内存堆栈溢出探测研究

    无数次遭受堆栈溢出折磨,随着系统变得复杂,故障点越来越难以查找!主要溢出情况如下:1,一般RAM最后两块空间是堆Heap和栈Stack,堆从下往上用,栈从上往下用,任意一个用完,都会进入对方的空间2, ...

  8. 最简单的STM32入门教程----闪烁LED

    本文讲述的是如何从零开始,使用keil建立一个简单的STM32的工程,并闪烁LED灯,给小白看. 第零步,当然首先你得有一个STM32的板子,其IO口上接了一个LED... 第一步,建立一个文件夹0. ...

  9. STM32 硬件I2C 到底是不是个坑?

    /** ****************************************************************************** * @author    Maox ...

随机推荐

  1. IE6 下 输入类型表单控件背景问题

    .box input{background:url(img/1.jpg) fixed} <body> <div class="box"> <input ...

  2. 在vim下,实现nesC语句的高亮

    默认的vim没有支持nesC语法高亮,给阅读源码带来不便.不过可以通过装NesC Syntax Highlighting插件来解决这个问题,具体操作如下: 步骤一:下载插件 在http://www.v ...

  3. Linux学习 -- 备份与恢复

    备份 Linux系统需要备份的数据 /root/ /home/ /var/spool/mail /etc/ others 备份策略 完全备份 增量备份 差异备份 备份和恢复命令 dump  resto ...

  4. HDU 5741 Helter Skelter

    离线处理+扫描线.题意很容易转化:若干个矩形形成并集,询问一些点是否在并集中? 官方题解不是这样做的....那种做法效率更高,暂时还不会.我这样是4500ms G++过的,C++TLE...... 区 ...

  5. 初学HTML5的一点理解

    刚接触了一点点用h5移动端的一点知识,用自己最浅薄的理解来看解决自适应屏幕尺寸问题和适应屏幕尺寸的布局问题.这里,为了解决自适应屏幕尺寸问题大概需要做的就是把HTML中的元素的尺寸尽可能的用百分比表示 ...

  6. CNS数据库网站开发环境的配置

    1)下载wamp服务器.使用php来开发 2)配置mysql服务器,主要把原来已有的数据导入到wamp服务器的mysql.改mysql的my.ini里德datadir的地址即可,将datadir设为已 ...

  7. js的阻塞特性

    JS具有阻塞特性,当浏览器在执行js代码时,不能同时做其它事情,即<script>每次出现都会让页面等待脚本的解析和执行(不论JS是内嵌的还是外链的),JS代码执行完成后,才继续渲染页面. ...

  8. centos和ubuntu下使用cron设置定时任务

    1.启动cron工具[ps:使用root权限] centos启动cron两种方式 a) /etc/init.d/crond start b) service crond start ubuntu启动c ...

  9. SQL查询重复记录

    假设现有一张人员表(表名:Person),若想将姓名.身份证号.住址这三个字段完全相同的记录查找出来,使用 1: SELECT p1.* 2: FROM persons p1,persons p2 3 ...

  10. Oracle获取系统时间及格式化

    Oracle 获取当前日期及日期格式 获取系统日期:  SYSDATE()   格式化日期:     TO_CHAR(SYSDATE(),'YY/MM/DD HH24:MI:SS)           ...