初学32,留下一点自己学习的记录,以便今后参考,大神指明错误不胜感激

一.首先说说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为锁相环倍频输出

使用的系统时钟是72 MHz,如图左边部分是选择时钟源内部还是外部时钟,右边绿色的部分是针对于不同外设 对系统时钟进行不同的时钟分频。

小结一下,APB1操作速度限于36MHZ,APB2操作用于全速72MHZ。

APB1挂载低速外设,APN2 AHB挂载高速外设。

以上时钟输出中AHB总线时钟,内核时钟,各种APB1 APB2外设都带使能控制,当需要某个模块时,一定要先使能对应的时钟,通过RCC_AHBENR来打开外设时钟,使能时钟的方法会在后面贴出。

转载于:https://www.cnblogs.com/mrgsf/p/6864297.html

关于STM32系统构架的一点见解相关推荐

  1. stm32数据手册中文_浅聊STM32系统构架

    打开stm32中文参考手册时,第一页就是就是系统构架.这本手册也是言简意赅.在学习它之前,首先需要搞明白什么是系统构架(名词的概念).然后再去具体到一个实际的系统构架.具体去分析. 所谓系统构架,通俗 ...

  2. 第二讲:Android系统构架分析和应用程序目录结构分析

    2019独角兽企业重金招聘Python工程师标准>>> 本讲内容: Android系统构架简介 Android应用程序结构分析 点这里下载:Android学习指南第二讲源代码 一.A ...

  3. 软考备考-系统构架师-12-软件架构设计相关试题整理

    博客迁移 不恰饭的小站 说明 1 整理2009~2016年系统构架师"软件架构设计"题目 2 内容见文档:"考点按章节整理\第 9 章 软件架构设计\软件架构设计.doc ...

  4. 软考备考-系统构架师-16-数据库系统相关试题整理

    博客迁移 不恰饭的小站 说明 1 整理2009~2016年系统构架师"数据库系统"题目 2 内容见文档:"考点按章节整理\第 10 章 数据库系统\数据库系统.docx& ...

  5. 系统技术方案 系统构架_构架系统时应注意的事项

    系统技术方案 系统构架 by Ayelet Sachto 通过Ayelet Sachto 架构系统时要记住的6件事 (6 Things to keep in mind when architectin ...

  6. STM32系统时钟默认设置

    "我们一直都说STM32有一个非常复杂的时钟系统,然而在原子或者野火的例程中,只要涉及到时钟,我们却只能看到类似的库函数调用,如RCC_APB2PeriphClockCmd(RCC_APB2 ...

  7. Android 系统构架(转)

    Android 系统构架(转) 一.Aplications(应用层) Android 将会有一些核心的应用,比如邮件客户端.SMS程序.计算器.地图.浏览器.联系人等等.所有的应用程序都用Java语言 ...

  8. STM32系统定时器SysTick(只能向下递减)延时闪烁灯

    参考:stm32 系统定时器 SysTick 作者:点灯小哥 发布时间: 2021-03-10 13:46:00 网址:https://blog.csdn.net/weixin_46016743/ar ...

  9. STM32——系统滴答定时器

    STM32--系统滴答定时器 宗旨:技术的学习是有限的,分享的精神是无限的. 一.SysTick[内核中] [风格:先描述一下库对寄存器的封装,再举例实现某些功能] SysTick定时器被捆绑在NVI ...

最新文章

  1. gradle新建工程,多项目依赖,聚合工程
  2. ie浏览器修复工具_电脑故障修复不求人!50个小工具可帮你一键修复
  3. Activity栈管理(三):Intent的Flag与taskAffinity
  4. java 解压缩 工具类_Java实现的zip压缩及解压缩工具类示例
  5. jsp form表里的submit点击没反应
  6. UUID,加密解密算法的使用
  7. jQuery .tmpl() 用法
  8. Leanote使用mysql_《搭建个人Leanote云笔记本》阿里云体验实验室 教程
  9. python3 html生成pdf,Python3转换html到pdf的不同解决方案
  10. 常用串口监控软件:Accessport,ComMonitor,Device Monitoring Studio
  11. TBSchedule源码学习笔记-启动过程
  12. HTML颜色表及html代码
  13. 【游戏策划】Excel的使用技巧(一)
  14. UFS 3.1协议分析(第一至四章) -- UFS概述
  15. php hr标签,css中如何设置hr的样式?css hr标签多种样式(图文)
  16. .net 基于wkhtmltopdf插件,Rotativa包在后端根据html代码生成pdf文件
  17. Python: 第三方模块(modules)的安装位置 (2014-08-24 23:19:18)转载▼ 标签: site-packages dist-packages 默认安装目录 分类: Pyth
  18. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  19. Win11字体怎么调大?Win11调整字体大小的方法
  20. 【小学信息技术教资面试】《蜻蜓立小荷》教案

热门文章

  1. Git 的安装与初次使用 —— Git 学习笔记 03
  2. Unity3D ShaderLab 内发光防护罩
  3. rabbitMq自动创建队列
  4. Jackson 注解 -- 类型转换(序列化,反序列化)、私有字段
  5. 导出oracle sequences,CSS_oracle导出序列方法分析,方法一:SELECT ' CREATE SEQUEN - phpStudy...
  6. JZOJ 4910. 【NOIP2017模拟12.3】子串
  7. java remote desktop_Remote Desktop
  8. promise then err_Promise 原理解析与实现(遵循Promise/A+规范)
  9. 安卓 camera 调用流程_[Camera]Camera1 open、preview、take picture流程分析(3)
  10. 条件随机场(CRF)相对于HMM,MEMM的优势