stm32的体系架构

转载地址:https://blog.csdn.net/qiaoyu5212/article/details/76696157

一.首先说说STM32F10x芯片由丝印所体现出的共同点和区别。 
先简单说说命名规则: 
101基本型,102USB基本型,103增强型,105或107互联型。 
T:36脚,C:48脚,R:64脚,V:100脚,Z:144脚。 
C:256K SRAM, D:384K SRAM, E:512K SRAM。 
我们正对芯片的丝印,会看到芯片左下角会有一个小圆点(正方向),有的在右上角会有一个稍大点的圆圈标记,靠近左下角小圆点的管脚号为1,然后以逆时针方向,ZET6最后一个管脚号为144,VET6最后一个管脚号为100,即是Z的管脚多于V的,说以说Z的功能也要多于V的;接下来说说丝印上的ARM和ST,crotex-Mx内核是由ARM公司(就叫做IP厂商)设计的,一块32除了内核还必须有外围电路,ST公司在获得ARM内核设计的授权后,据此设计出外围电路(SOC厂商,像三星,苹果,飞思卡尔。。。都是SOC厂商,其使用的内核都是IP厂商授权的),比如说储存程序的FLASH,储存变量的SRAM,外设(GPIO,IIC,SPI,USTAR等等),小结一下32的芯片构架是由内核(驱动单元)和外设(被动单元)组成。

二.STM32F10xx 的系统框架的理解

(1)驱动单元 
Icode总线: 
我们写好的程序写好后通过编译都变成一条条指令存储在外设的FLASH里面,内核要读取这些指令来执行程序就必须通过Icode总线(专门用来取指)。

DCode总线与DMA总线: 
即为DATA,我们知道常量const 存放在内部FLASH里面,而变量存在内部SRAM里面。这些数据可以由DCode和DMA来读取,为了避免两者同时去读取数据从而造成冲突,所以在两者读取数据的时候会有一个总线矩阵来裁定谁来读取数据。

System总线: 
读取数据,最主要还是用来访问外设的寄存器,即读写寄存器都是通过这条总线来完成的。

DMA总线: 
说先说这条总线也是主要老传输数据的,这个数据可以是某个外设的数据寄存器,可以是SRAM,可以是内部的FLASH 
这里写图片描述 
我们以一个例子来说明DMA总线的作用,还有简单的区分一下DMA和DCode的区别,如果我们没有DMA ,现在要从SRAM里读取一个数据到内部的外设数据寄存器DR,首先CPU通过DCode总线将数据从SRAM读到CPU的内部的通用寄存器里来暂存数据,然后在通过DCode总线将数据传到DR,这样通过了CPU作为数据的中转。但是我们现在有了DMA总线,只需要CPU发送命令就可以将SRAM里的数据直接发送到DR。

(2)被动单元 
内部FLASH: 
内部闪存存储器,我们编写好的程序通过编译后变成一条条指令存放在这里,Crotex-Mx通过ICode总线访问内部FLASH来取指。

内部SRAM: 
Static Random Access Memory 
它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。不像DRAM(Dynamic Random Access Memory)那样需要刷新电路,每隔一段时间,固定要对DRAM刷新充电一次,否则内部的数据即会消失,因此SRAM具有较高的性能,但是SRAM也有它的缺点,即它的集成度较低,相同容量的DRAM内存可以设计为较小的体积,但是SRAM却需要很大的体积,所以在主板上SRAM存储器要占用一部分面积。 
当然SRAM的优点就是速度快,不必配合内存刷新电路,可提高整体的工作效率. 
SRAM的缺点是集成度低,功耗较大,相同的容量体积较大,而且价格较高,所以少量用于关键性系统以提高效率。 
像程序的变量,堆栈等等的开销都是基于内部的SRAM,Crotex-Mx通过DCode总线来访问它。

FSMC: 
Flexible Static Memory Controller 
可变静态存储控制器,这是STM32系列采用一种新型的存储器扩展技术,由于通过对特殊功能寄存器的设置,FSMC能够根据不同的外部存储器类型,发出相应的数据/地址/控制信号类型以匹配信号的速度,从而使得STM32系列微控制器不仅能够应用各种不同类型、不同速度的外部静态存储器,而且能够在不增加外部器件的情况下同时扩展多种不同类型的静态存储器,满足系统设计对存储容量、产品体积以及成本的综合要求。 
强调一下,只能拓展静态内存。

STM32F10xx系统时钟树: 
这里写图片描述 
先来说说5个时钟源,如图左边部分: 
1.HSI是高速内部时钟,RC振荡器频率为16MHz,可以直接作为系统时钟或经过二分频后用作PLL的输入。 
2.HSE是高速外部时钟,可接4~26MHz石英陶瓷谐振器或者接外部时钟源,可以直接作为系统时钟或经过二分频后用作PLL的输入。 
3.LSE是低速外部时钟,接32.768KHz石英晶体,主要是RTC时钟源。 
4.LSI是低速内部时钟,RC振荡器,32KHz左右,供独立看门狗和自动唤醒单元使用。 
5.PLL围锁相环倍频输出,32上面有两个PLL

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: STM32 是一款基于ARM Cortex-M 内核的微控制器系列,其软件架构设计主要包括以下几个方面。 首先,STM32 的软件架构设计根据其内核特性,采用分层结构,包括底层驱动层、中间层和应用层。底层驱动层负责与硬件外设进行交互,中间层提供一些常用的库函数和协议栈,应用层则是开发者实现自己的业务逻辑的地方。这种分层的设计使得软件开发更加模块化和可维护。 其次,STM32 的软件架构设计采用了面向对象的编程思想,使用多种软件设计模式,如事件驱动模型、观察者模式等。通过事件驱动模型,外设的操作可以通过中断方式触发,有效解决了资源竞争和实时性的问题。而观察者模式可以实现不同模块之间的解耦,方便软件的扩展和维护。 另外,STM32 的软件架构设计还注重数据结构的设计和优化。根据不同的应用场景,可以合理选择适当的数据结构和算法,提高软件的效率和性能。同时,还可以利用DMA (直接内存访问)控制器和外设的硬件加速功能,减轻CPU 的负担,提高系统的实时性。 最后,STM32 的软件架构设计还包括低功耗优化。通过合理的休眠模式的选择,以及中断和时钟的管理,可以降低系统的功耗,延长电池寿命。此外,还可以通过软件设计实现功耗管理策略,根据系统的实际工作状态动态调整功耗模式,更好地满足应用要求。 综上所述,STM32 的软件架构设计是一个以分层结构为基础,面向对象、事件驱动、数据结构优化和低功耗优化为特点的系统设计。这种设计可以提高系统的灵活性、扩展性和实时性,满足不同应用场景的需求。 ### 回答2: STM32软件架构设计是指在使用STM32系列微控制器开发应用程序时所设计的软件体系结构。它是一个基于嵌入式系统的设计,涉及到硬件平台和软件层面的设计。 软件架构设计通常包括以下几个方面: 1. 硬件平台选择:首先,需要选择合适的STM32微控制器作为硬件平台。选择合适的芯片型号,根据项目需求确定其性能、接口、存储等硬件资源。 2. 系统划分:将整个系统按功能进行划分,确定主控制逻辑、外设驱动、通信协议等模块的划分。 3. 任务调度:设计任务调度器,将不同的任务分配到不同的优先级中,确保系统中各个任务之间的协调工作。 4. 驱动程序设计:根据硬件平台的要求,编写相应的驱动程序,实现对外设的访问和控制。 5. 中断处理:设计中断处理程序,响应外部中断事件(例如,按键触发)。 6. 通信协议设计:如有需要,根据项目需求,选择合适的通信协议(如CAN、UART、SPI等),并进行相应的协议设计和实现。 7. 任务逻辑设计:根据需求,设计各个任务的逻辑流程,并实现任务之间的交互、数据传输等操作。 8. 软件测试和调试:对软件进行测试和调试,确保系统功能的正确性和稳定性。 总之,STM32软件架构设计对于嵌入式系统的开发非常重要。它能够提高系统的稳定性、可扩展性和可维护性,同时也能够优化资源的利用,提升系统的性能。有一个良好的软件架构设计可以有效地降低开发难度和时间,提高开发效率。 ### 回答3: STM32是一款32位的嵌入式微控制器系列,软件架构设计是指在STM32开发过程中,根据系统需求和硬件特性,设计出合理的软件架构,用于实现系统功能和性能的优化。 首先,软件架构设计要考虑系统的模块划分。针对不同的功能模块,将其划分为独立的模块,并通过合适的接口进行通信。例如,将外设控制模块、通信模块、数据处理模块等划分为不同的模块,便于模块之间的独立设计和后续的维护。 其次,软件架构设计要考虑系统的任务调度与管理。采用合适的任务调度算法,实现任务的优先级管理和任务切换。通过任务调度器,合理安排任务的执行顺序,提高系统的响应能力和效率。 此外,软件架构设计还要考虑系统的中断管理。STM32采用了中断机制,对于外部事件的响应十分重要。在软件架构设计中,应合理配置中断优先级,确保中断的及时响应和处理。同时,针对不同的中断类型,设计合适的中断服务程序,以实现相应的功能需求。 另外,软件架构设计要考虑系统的存储管理。在STM32中,具有不同的存储器,例如Flash、RAM等。针对不同的存储器,设计合适的存储管理模块,实现数据的读写和管理。同时,还要考虑存储器的分配和使用,在有限的存储容量内实现系统功能的完整性。 最后,软件架构设计还要考虑系统的通信协议和接口设计。在STM32开发中,通常需要与外部设备或其他硬件进行通信。根据具体需求,选择合适的通信协议,并设计相应的通信接口模块,以实现数据的传输和交互。 综上所述,STM32软件架构设计是一个系统工程,需要考虑多方面的因素。通过合理的模块划分、任务调度与管理、中断管理、存储管理以及通信协议和接口设计,可以实现系统功能和性能的优化,满足不同应用场合的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值