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 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:----------- &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:-----------
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----------- 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:-FF-D4-FB--4E------
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:----------- F�
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----------- *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芯片信息的更多相关文章
- STM32/GD32芯片信息(转)
源:STM32/GD32芯片信息 因为需要自动适配芯片进行系统配置,所以我们有必要通过读取一些系统寄存器来获取必要信息.我们的代码需要兼容STM32F1/GD32F1/STM32F0/STM32F4 ...
- stm32——NFC芯片--PN532的使用
stm32——NFC芯片--PN532的使用 一.NFC简介 NFC(Near Field Communication)近场通信,是一种短距高频的无线电技术,在13.56MHz频率运行于20厘米距离内 ...
- GD32芯片移植完全攻略
GD32是国产兆易创新公司生产的完全兼容STM32系列的Cortex-M3处理器,具有几大亮点:1,高主频108MHz.性能提升30%以上,可超频到120MHz2,Flash零等待.STM32的72M ...
- STM32系列芯片命名规范
1.STM32的基础知识 STM32是意法半导体公司,基于ARM Cortex®-M0,M0+,M3, M4和M7内核生产的系列通用MCU.截止当前时间为止(20190515),STM32有STM32 ...
- VScode开发STM32/GD32单片机-MakeFile工程JlinkRTT配置
本次使用开发板为STM32F401CCU6,使用CubeMX配置一个Makefile工程 配置时候为内部时钟 工程选择makefile工程类型 只生成需要的文件 用VSCode打开后显示很多波浪线 选 ...
- VScode开发STM32/GD32单片机-环境搭建
1.软件下载 1.1.安装VSCode 1.2.下载安装VisualGDB 1.3.下载安装mingwin64 1.4.下载安装OpenOCD 1.5.下载GNU Arm Embedded Toolc ...
- STM32/GD32上内存堆栈溢出探测研究
无数次遭受堆栈溢出折磨,随着系统变得复杂,故障点越来越难以查找!主要溢出情况如下:1,一般RAM最后两块空间是堆Heap和栈Stack,堆从下往上用,栈从上往下用,任意一个用完,都会进入对方的空间2, ...
- 最简单的STM32入门教程----闪烁LED
本文讲述的是如何从零开始,使用keil建立一个简单的STM32的工程,并闪烁LED灯,给小白看. 第零步,当然首先你得有一个STM32的板子,其IO口上接了一个LED... 第一步,建立一个文件夹0. ...
- STM32 硬件I2C 到底是不是个坑?
/** ****************************************************************************** * @author Maox ...
随机推荐
- 入门Webpack
---恢复内容开始--- 什么是WebPack,为什么要使用它? 为什要使用WebPack 现今的很多网页其实可以看做是功能丰富的应用,它们拥有着复杂的JavaScript代码和一大堆依赖包.为了简化 ...
- 获取手机是否root信息
private String isRoot(){ String bool = "Root:false"; try{ if ((!new File("/system/bin ...
- AJAX跨域问题解决---后台解决
对于ajax请求数据,经常出现一个坑,防不胜防.今天突然找到一个很好的解决办法,直接在后台设置资源共享就可以了. 代码为:response.raw().setHeader("Access-C ...
- JAVA入门[20]-Spring Data JPA简单示例
Spring 对 JPA 的支持已经非常强大,开发者只需关心核心业务逻辑的实现代码,无需过多关注 EntityManager 的创建.事务处理等 JPA 相关的处理.Spring Data JPA更是 ...
- 微服务架构之RPC-client序列化细节
通过上篇文章的介绍,知道了要实施微服务,首先要搞定RPC框架,RPC框架的职责要向[调用方]和[服务提供方]屏蔽各种复杂性: (1)让调用方感觉就像调用本地函数一样 (2)让服务提供方感觉就像实现一个 ...
- 十四、Spring Boot 日志记录 SLF4J
在开发中打印内容,使用 System.out.println() 和 Log4j 应当是人人皆知的方法了. 其实在开发中我们不建议使用 System.out 因为大量的使用 System.out 会增 ...
- 自学Zabbix3.1-语言切换
题记: 默认使用的zabbix版本为Zabbix 3.0.8 登陆到zabbix web控制台默认是英文界面,对有些英文不好或者习惯中文的人来说会有不适应. 实际上是切换到中文版本,步骤:点击用户 ...
- 【转载】Android Studio 导入External Libraries
转载: 世军 Android Studio 导入External Libraries http://www.cnblogs.com/shijunzhang/p/5625432.html 导入本地Li ...
- CentOS 7 学习(二) 配置Nginx反向代理
CentOS 7 学习(二) 配置Nginx反向代理 Nginx可以通过php-fpm来运行PHP程序,也可以转向apache,让apache调用php程序来运行. 不过对于Nginx来说,其反向代理 ...
- 【java设计模式】责任链模式
可以随时添加过滤器,并在主方法中添加删除: Main package com.tn.filter; public class Main { public static void main(String ...