网游之废物传说2STM32芯片主要由内核和片上外设组成,STM32F103采用的是Cortex-M3内核,内核由ARM公司设计。STM32的芯片生产厂商ST,负责在内核之外设计部件并生产整个芯片。这些内核之外的部件被称为核外外设或片上外设,如 GPIO、USART(串口)、I2C、SPI 等。
芯片内核与外设之间通过各种总线连接,其中驱动单元有 4 个,被动单元也有 4 个,具体如上图所示。可以把驱动单元理解成是内核部分,被动单元都理解成外设。
ICode总线是专门用来取指令的,其中的I表示Instruction(指令),指令的意思。写好的程序编译之后都是一条条指令,存放在 FLASH中,内核通过ICode总线读取这些指令来执行程序。
DCode这条总线是用来取数的,其中的D表示Data(数据)。在写程序的时候,数据有常量和变量两种。常量就是固定不变的,用C语言中的const关键字修饰,放到内部FLASH当中。变量是可变的,不管是全局变量还是局部变量都放在内部的SRAM。
我们通常说的寄存器编程,即读写寄存器都是通过系统总线来完成的,系统总线主要是用来访问外设的寄存器。
DMA总线也主要是用来传输数据,这个数据可以是在某个外设的数据寄存器,可以在SRAM,可以在内部FLASH。
因为数据可以被Dcode总线,也可以被DMA总线访问,为了避免访问冲突,在取数的时候需要经过一个总线矩阵来仲裁,决定哪个总线在取数。
内部的闪存存储器即FLASH,编写好的程序就放在这个地方。内核通过ICode总线来取里面的指令。
内部的SRAM,是通常所说的内存,程序中的变量、堆栈等的开销都是基于内部SRAM,内核通过DCode总线来访问它。
从AHB总线总线是最常见的总线C、SPI 这些外设就挂载在这两条总线的重点,要学会对这些外设编程,去驱动外部的各种设备。
做过单片机产品的朋友都知道,STM32芯片有多组VDD和VSS,如下图: 那么为什么有这么多引脚呢?少一点不好吗?引脚越少,PCB走线越容易。 其实芯片这样设计是有原因的。 1、增加电流供应能力 单片机IO口输出电流的能力是有限的,传统单片机的IO口一般为10mA左右,现在单片机的IO口一般为20-25mA。 多个IO口加起来,相当于增加了很多供电通道,扩大了电流供应能力。相比单个引脚的VDD,增强了可靠性。 如图,假如一个IO口流过的电流是20mA,三个IO口就是60mA。 2、方便就近取电 为了方便描述,我画了一个如下示意图。 假如只有一组VDD,从①处供电,当②处需要用电时,只能沿着箭头所示路径流动,可以看出距离较远
引脚为什么有那么多组VDD? /
1.为什么我们要先开启STM32外设模块时钟; 2.关于STM32的 I/O 复用功能及什么时候开启AFIO时钟; 1 为什么我们要先开启STM32外设时钟 讲述本节内容之前先说一个案例: 前段时间,有一个朋友为配置EXTI的代码折腾了一天,最终没有结果。于是问了我这样一个问题:“你用过STM32F051C8T6的外部中断吗,就是GPIO管脚做中断,我这边就是进不了中断”。 然后他把基于标准外设库、寄存器写的代码都给我发过来了。我仔细看了又看,没发现有什么毛病啊。(但是,代码是截图分来给我发过来的)。 于是,我将之前配置IO外部中断的代码,按照他(PB2)的要求,写成一个“EXTI配置”函数发给他,他直接拷贝过去,成功了。 于
模块?什么时候开启AFIO时钟? /
问题描述 某STM32用户反馈,当使用STM32L4芯片的时候,程序运行一段时间后,会忽然复位。复位后程序继续运行,但是还会继续复位,原因不详。 问题解析 初步确定复位的原因,是硬件复位,如外部NRST被拉低,还是软件复位,包括软件直接调用复位,或者看门狗复位,还是低功耗模式如standby模式被唤醒时产生中断。 查看复位状态寄存器了解复位大方向,然后做进一步得拆解分析。 目前客户项目的复位原因是因为看门狗复位,即客户使用了IWDG,但由于某种原因没有及时喂狗,导致IWDG超时复位。初步怀疑由于客户软件的问题,程序跑飞,进入异常处理。 因为客户的异常处理函数中并没有做任何动作,导致独立看门狗IWDG复位。基于此,我
异常复位的原因有哪些 /
UID线系列的芯片都在固定的地方放置了长度为96位的唯一身份识别码,简称UID,只有极少数STM32系列芯片内部没有该UID,比方超值型STM32F0x0系列,STM32F100系列。具体到哪颗芯片到底有没有UID,在芯片数据手册的首页都有明确的说明,无需猜测。如下图所以: 芯片所对应的参考手册里,有对该UID存放地址的详细介绍。地址因不同系列或子序列而不同。 关于这个UID常有人有些疑问,有几个问题在这里稍微总结下: 1、有无问题。上面说了绝大部分STM32都内置UID,具体以查看数据手册为准。 2、唯一性问题。该UID的唯一性是靠96位这个整体来保证其唯一性,你若截取部分就不保证了。 3、内容问题。有人对这个
UID话题 /
STM32芯片主要由内核和片上外设组成,STM32F103采用的是Cortex-M3内核,内核由ARM公司设计。STM32的芯片生产厂商ST,负责在内核之外设计部件并生产整个芯片。这些内核之外的部件被称为核外外设或片上外设,如 GPIO、USART(串口)、I2C、SPI 等。 芯片内部架构示意图 芯片内核与外设之间通过各种总线连接,其中驱动单元有 4 个,被动单元也有 4 个,具体如上图所示。可以把驱动单元理解成是内核部分,被动单元都理解成外设。 ICode 总线 ICode总线是专门用来取指令的,其中的I表示Instruction(指令),指令的意思。写好的程序编译之后都是一条条指令,存放在 FLASH中,内核通过IC
的详细介绍 /
STM32芯片的ADC模块往往都支持模拟看门狗功能,即可以对单个或多个通道开启模拟转换值的监测。当模拟通道ADC值超出设定的阈值时可以产生模拟看门狗事件并可触发看门狗中断。【注:下面截图或数据都是基于STM32L4系列芯片的,其它STM32系列与其类似。】 结合上图,当选定的ADC通道的转换结果比设置的阈值上限还高或比设定的阈值下限还低时都可以通过硬件触发模拟看门狗事件或中断。 假设现有STM32用户有这样一个应用需求,他希望STM32的供电电压低于一定程度时就提示低压报警,然后软件将进行相关处理。 关于这个应用需求,我们就可以利用片内的一个参考电压和模拟看门狗来实现。 我们知道,STM32芯片内部都内置了一个比
如何使用片内参考电压实现模拟看门狗 /
嵌入式系统软硬件协同设计实战指南:基于Xilinx ZYNQ(第2版)
【下载】STM32WB基于Custom Template实现客户定制BLE私有协议
【课程】STM32 & X-Cube-TouchGFX GUI开发实践
【新品】STM32H5-Arm® Cortex®-M33 内核,主频高达250MHz,提升性能与信息安全性
【新品】STM32MP13X-支持Linux、RTOS和Bare Metal应用,新一代通用工业级MPU
【新品】Arm® Cortex®-M33处理器内核,运行频率160 MHz,基于Armv8-M架构并带有TrustZone®
STM32Cube.AI开发者云:只需四个步骤,轻松将AI集成到MCU
综合资讯51单片机PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程
|