在使用STM32F1xx系列单片机时可以直接在指定地址中读取单片机相关信息,在参考手册上的相关介绍如下。
通过上面的介绍可以看到,直接去这些指定地址中读取数据,就可以获取到MCU的相关信息。下来就直接通过代码去获取这些信息。
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
u32 flash_id[4];
u16 flash_size;
u32 mcu_id;
int main( void )
{
while( 1 )
{
flash_size = *( unsigned int * )( 0x1FFFF7E0 ); //闪存容量
flash_id[0] = *( unsigned int * )( 0x1FFFF7E8 + 0x00 ); //ID 0-31
flash_id[1] = *( unsigned int * )( 0x1FFFF7E8 + 0x04 ); //ID 32-63
flash_id[2] = *( unsigned int * )( 0x1FFFF7E8 + 0x08 ); //ID 64-95
mcu_id = *( unsigned int * )( 0xE0042000 ); //MCU ID
}
}
通过指针,直接在地址中去读取数据,通过单步调试,观察读取到的值,和单片机内存中的值是否一致。
通过观察中的变量值和单片机内存中的值对比,可以看出,读出的数据和内存中数据一致。
读出单片机的内存大小为0x0040,换算为10进制数为64。通过上面的闪存容量寄存器的介绍可以知道,闪存容量是以K为单位的,说明当前单片机的容量为64K,测试用的单片机型号为STM32F103C8T6,容量正好是64K。说明读取的数据和实际情况是一致的。
读出的96bit的设备 ID号和内存中的内容也一样,说明已经正确的获取到了设备的 ID编号。
通过mcu_id的值0x20036410可以看出,芯片的版本为0x2003,是中等容量产品,版本为 Y。它的设备编码为410。
关键字:STM32F1xx系列 单片机
引用地址:
STM32F1xx系列单片机通过程序获取MCU信息
推荐阅读最新更新时间:2024-11-09 17:44
利用高度集成的8位MCU简化CAN汽车应用
控制器局域网(CAN)协议是在20世纪80年代中期专为汽车行业设计的一种规范,可在日益增长的互联应用中减少数据传输的布线复杂性(重量、数量和成本)。 CAN的优势也被其他市场(包括工厂自动化和医疗应用)接受和吸纳,这使其应用范围更加广泛,全球每年交付的CAN节点超过10亿个。同样,每年交付的8位单片机(MCU)也超过10亿个。如今,虽然这些统计数据有部分重叠,但今后仍会有大幅增长。 CAN继续满足汽车制造商的需求 传统的CAN通信以事件为基础,允许单片机和专用集成电路(ASICS)在应用中直接相互通信,无需主机。CAN经过半导体公司集成后极大降低了成本,并且能够与更多汽车系统兼容。自2000年初以来,8位M
[嵌入式]
采用STM32单片机和EM310模块的无线终端设计及在SCADA系统中的应用
引言 在监测监控及数据采集系统(SCADA)系统中,采集数据的实时性和准确性对系统有很大的影响,合适的通信网络可以有效提高SCADA系统的效益,本文设计的GPRS无线终端在SCADA系统中的应用解决了上述问题,除满足数据实时性和准确性外,还具有建设成本低.结构简单.传输容量大.可远程控制等优势. 1 、终端简介 1.1、终端结构 无线终端由EM310GSM模块和STM32F103单片机构成,以STM32F103单片机为核心,STM32F103单片机有丰富的通信接口,用于连接EM310和现场仪表;还有丰富的I/O资源,可以扩展较大容量的RAM,一方面存储指令集,用于解读指令并作出相应的动作;另一方面用于暂时存储监测点采集到的数据
[单片机]
51单片机学习笔记1 -- 单片机最小系统仿真电路绘制
1.Protues新建工程 打开Protues,首页打开ISIS图标,绘制电路图 进入到以下绘制界面 像电路中的芯片、电阻电容等,都可以在器件区找到,直接点击器件区的Pick Device,会弹出来一个器件选择框 可以看到器件选择框中有很多类别的元器件,对于行业单词不熟悉的我们可以在搜索框键入我们想找的元器件,比如51芯片,在搜索框键入89C52,可以看到器件明细区出来两个AT89C52芯片待选 选中需要的芯片,右侧会出现选中的元器件对应预览图和PCB封装图,可以从预览图中看到我们选中的芯片是不是我们想要的,引脚数是否一样等,右下角有个下拉菜单可以选择不同的PCB封装,但PCB不是我们电路图所需要考虑的,所以选中芯
[单片机]
基于STM8L15x单片机的串口printf输出程序分享
这里我们以STM8L15x系列单片机使用ADC内部参考电压测量VDD电压并将电压值value通过窗口打印为例编写程序,(STM8L使用ADC内部参考电压通道测量VDD电压) usart.h头文件: #ifndef _usart_H #define _usart_H #include “stm8l15x.h” void Usart_Init(void); #endif usart.c源文件: #include “usart.h” void Usart_Init(void) { CLK_PeripheralClockConfig (CLK_Peripheral_USART1,ENABLE); //开启USART1时钟 USART_
[单片机]
STM32 MCU通过STM32CubeMx配置NVIC怎么没有中断子优先级选项
1、使用CubeMx配置NVIC时为何不见子优先级选项? 有些STM32用户,尤其是那些用过基于ARM Cortx-M3/M4/M7内核的STM32 MCU的用户,在使用基于M0/M0+内核的STM32系列并通过STM32CubeMx进行NVIC配置时,不难发现一个问题,那就是怎么没有中断子优先级【或称响应优先级、副优先级等】的配置?!【当然,很多时候我们或许没有关注子优先级】如下图所示,只看到抢占优先级的配置,看不到子优先级的配置项。 上图是我基于STM32L0系列芯片的配置,该系列芯片是基于ARM Cortex-M0+内核的。我们再看看下图的NVIC配置页面,显然可以看到抢占优先级【PreemptionPriority】和
[单片机]
STM32入门学习笔记之时钟树架构(上)
2.1 时钟树结构图 STM32属于Cortex-M3内核的单片机,时钟结构比之前的51单片机较复杂的多,根据数据手册,STM32F103的时钟结构如下图所示。 根据上图可以看到,STM32F103系列单片机具有4个时钟源,内部的8MHz时钟发生器,外部的晶体振荡器接口,最高支持16MHz,外部的32.768kHz晶体振荡器接口和内部的40kHz时钟发生器,其中32.768kHz和40kHz主要用于内部RTC时钟脉冲,8MHz的晶振通过PLL时钟倍乘器,将系统总线时钟提高为72MHz。 STM32F103系列内部具有2条外设时钟总线,APB1和APB2,其中APB2的时钟最高可达72MHz,APB1的时钟最高可达36MHz
[单片机]
说一说STM32启动过程
STM32上电后是怎么启动的? main函数之前单片机都做了些什么? 带着这些疑问我们开始进入游戏。。。。。 首先,开局一张图,过程全靠编,如有说错的地方望能指正 启动大致流程 1- 上电启动或者硬件复位 2- 单片机从0x00地址开始执行程序,在执行程序前,单片机会根据BOOT引脚设置,将对应的存储器重映射到0x00处,如设置为BOOT0 = 0 ,BOOT1 = X 时,单片机将内部FLASH映射到0x00处,即将0X8000 0000地址映射到0X00处,单片机从FLASH中的程序启动,其他启动方式原理类似,相应的BOOT引脚设置如图 3- 跳转到存储有代码的存储介质(如FLASH)以后,单片机首先找到的是一
[单片机]
基于ADE7758 和MCU的多相多功能电能测量电表
0 引言 我国与发达国家一样, 随着电力供应市场化的逐步深入和计算机网络的快速普及和发展,为了缓解电力供应紧张的现状,正在大力推广分时电价,双费率电子电能表成为电能表新的发展趋势和需求热点。仅上海市自 2001 年起,五年内需要 600 万台复费率电能表。 国外电能表正在向大电流、大动态的需求方向发展。美国模拟器件公司开发出一种体积小巧、动态范围可达 1000 : 1 的新型电能测量集成电路 ADE7758 ,该 IC 内嵌了高精度的模数转换器和固定模式的数字处理信号处理器( DSP ),具有数字积分、数字滤波和具有众多实用电能监测、计量功能,正成为新一代高性能全数字电能表的理想芯片。 截止到 2002 年 10 月
[单片机]