STM32入门系列-学习STM32要掌握的内容
STM32芯片架构
STM32F103系列芯片的系统架构如下:
STM32芯片基于ARM公司的Cortex-M3内核,由ST公司设计生产,内核与总线矩阵之间有I(指令)、S(系统)、D(数据)三条信号线。内核通过总线矩阵与FLASH、SRAM、外设连接。而外设包括GPIO、USART、I2C、SPI等。
STM32芯片系统结构
STM32F103 系列芯片(不包含互联网型)的系统结构如下:
从上图可以看出,在小容量、中容量和大容量产品中,主系统由以下部分构
成:
四个驱动单元:
Cortex-M3 内核 DCode 总线(D-bus)
Cortex-M3 内核系统总线(S-bus)
通用 DMA1
通用 DMA2
四个被动单元:
内部 SRAM
内部闪存存储器FLASH
FSMC
AHB 到 APB 的桥(AHB2APBx),它连接所有的 APB 设备
这些都是通过一个多级的 AHB 总线构架相互连接的。 下面我们看看它们各自的功能:
ICode 总线
该总线将 Cortex-M3 内核的指令总线与闪存指令接口相连接。 指令预取在此
总线上完成。
DCode 总线
该总线将 Cortex-M3 内核的 DCode 总线与闪存存储器的数据接口相连接(常量加载和调试访问)。
系统总线
此总线连接 Cortex-M3 内核的系统总线(外设总线)到总线矩阵, 总线矩阵协
调着内核和 DMA 间的访问。
DMA 总线
此总线将DMA的AHB主控接口与总线矩阵相联, 总线矩阵协调着CPU的DCode和 DMA 到 SRAM、闪存和外设的访问。
总线矩阵
总线矩阵协调内核系统总线和 DMA 主控总线之间的访问仲裁, 仲裁利用轮换算法。在互联型产品中,总线矩阵包含 5 个驱动部件(CPU 的 DCode、系统总线、以太网 DMA、 DMA1 总线和 DMA2 总线)和 3 个从部件(闪存存储器接口(FLITF)、SRAM 和 AHB2APB 桥)。AHB 外设通过总线矩阵与系统总线相连,允许 DMA访问。
AHB/APB桥(APB)
两个 AHB/APB 桥在 AHB 和 2 个 APB 总线间提供同步连接。 APB1 操作速度限于 36MHz, APB2 操作于全速(最高 72MHz)。有关连接到每个桥的不同外设的地址映射请参考《STM32F1xx 中文参考手册》存储器映像章节。在每一次复位以后,所有除 SRAM 和 FLITF 以外的外设都被关闭,在使用一个外设之前,必须设置寄存器 RCC_AHBENR 来打开该外设的时钟。
STM32F1 的时钟系统相对复杂,在后续文章中再介绍。
STM32学习进阶路径
基本外设:
GPIO 输入输出,外部中断,定时器,串口。理解了这四个外设,基本就入
门了一款 MCU。
基本外设接口:
SPI,IIC,WDG, FSMC,ADC/DAC,SDIO 等。这些外设接口功能原理对每个芯片几乎都是一样。对芯片而言就是多和少而已。
高级功能:
UCOS,FATFS,EMWIN 等。以及一些应用。
另外值得一提的是,C 语言是嵌入式开发的基础中的基础。如果 C 语言不过关,很大程度限制嵌入式学习的进度与深度。在这里推荐3本书学习C语言,刚开始可以参看谭浩强的《C程序设计 第四版》,入门之后看一下关于C指针的书《C 与指针》《C 指针编程之道》。学习嵌入式开发要多动手编程、多调试,遇到问题也可以向本公众号留言提问,在力所能及的范围内会抽时间与大家交流、反馈,与君共勉!
STM32入门系列-学习STM32要掌握的内容的更多相关文章
- STM32入门系列-介绍STM32型号与功用
作为STM32初学者,一般会选择购置一块开发板,因为在开发板上有很多已经集成好的模块,如红外模块.按键模块.LED模块.DAC模块.ADC模块.can模块.485模块.以太网模块.WiFi模块.蜂鸣器 ...
- STM32入门系列-库帮助文档使用
在前面文件夹介绍时,提到了stm32f10x_stdperiph_lib_um.chm文件,此文件是库函数使用帮助文档,可以直接打开如下图. 因为STM32库函数非常多,我们不可能把所有的外设函数都记 ...
- STM32入门系列-启动文件介绍
在启动文件内部使用的都是汇编语言,这个文件的作用是负责执行微控制器从"复位"到"开始执行 main 函数"中间这段启动时间所必须进行的工作.它完成的具体工作有: ...
- STM32入门系列-存储器与寄存器介绍
介绍两部分内容: 什么是存储器映射 什么是寄存器及寄存器映射 为了让大家对存储器与寄存器有一个更清楚的认识,并且为之后使用 C 语言来访问 STM32 寄存器内容打下基础.等明白了如何使用 C 语言封 ...
- STM32入门系列-库目录及文件介绍
已经介绍了过了CMSIS标准,ST公司按照这个标准设计了一套基于STM32F10x的固件库,我们可以直接在ST公司的官网进行下载,现在给大家STM32最新固件库v3.5,在网盘上给大家提供了下载包,链 ...
- STM32入门系列-CMSIS标准
使用寄存器点亮开发板上LED,这种开发方式显然是不适合大众,对于STM32这样庞大的芯片,内部寄存器实在太多,如果操作的外设比较多,那么就需要花很多时间查询底层寄存器内容,而且即使程序写好,如果要换其 ...
- STM32入门系列-开发工具keil5安装
主要介绍如下三部分内容: keil5软件获取 keil5安装 安装STM32芯片包 软件获取 可以通过搜索引擎搜索关键字"KEIL5下载",找到其官方网站www.keil.com. ...
- STM32入门系列-STM32时钟系统,时钟使能配置函数
之前的推文中说到,当使用一个外设时,必须先使能它的时钟.怎么通过库函数使能时钟呢?如需了解寄存器配置时钟,可以参考<STM32F10x中文参考手册>"复位和时钟控制(RCC)&q ...
- STM32入门系列-STM32时钟系统,自定义系统时钟
在时钟树的讲解中我们知道,通过修改PLLMUL中的倍系数值(2-16)可以改变系统的时钟频率.在库函数中也有对时钟倍频因子配置的函数,如下: void RCC_PLLConfig(uint32_t R ...
随机推荐
- spring初始(介绍、核心架构)
1.spring介绍 Spring是个java企业级应用的开源开发框架.主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用.Spring框架目标是简化Java企业级应用开发,并通 ...
- 深入了解Vue.js组件笔记
1.组件注册 Vue.component('name',{}) 创建的组件都是全局组件,它们在注册之后可以用在任何新创建的Vue根实例(new Vue)的模板中.第一个参数是组件的名字,第二个参数是一 ...
- ksoap2-android的简单使用
soap2-android 官网地址 https://simpligility.github.io/ksoap2-android/index.html 发行版本 https://oss.sonatyp ...
- python在一个画布上画多个子图
转载:https://blog.csdn.net/qq_26449287/article/details/103022636 matplotlib 是可以组合许多的小图, 放在一张大图里面显示的. 使 ...
- C++重载>>和<<(输入和输出运算符)详解
转载:http://c.biancheng.net/view/2311.html 在C++中,标准库本身已经对左移运算符<<和右移运算符>>分别进行了重载,使其能够用于不同数据 ...
- 【题解】[USACO12JAN]Video Game G
第一道\(AC\)自动机\(+DP.\) 首先,一个自动机上\(DP\)的套路是设\(dp[i][j]\)表示长度为\(i\)匹配到\(j\)节点的最优得分. 那么,由于我们已经建好了\(Trie\) ...
- JVM笔记五-堆区
JVM笔记五-堆区 在JVM中,堆区是重中之重.通过前面文章的学习,我们知道了,栈区是不会有垃圾回收的,所以,经常说的垃圾回收,其实就是回收的是堆区的数据.在这里,我们将会看到传说中的,新生代.老年代 ...
- 多测师讲解requests __上_高级讲师肖sir
1.三种接口接口请求方式 # # 在python当中接口的请求方式有哪些:# import requests # 导入requests接口库# # # # 请求方式有三种:# # # # 第一种:# ...
- 多测师讲解html _链接标签004_高级讲师肖sir
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>链 ...
- day19 Pyhton学习 递归函数
# 函数的递归 : 在一个函数的内部调用它自己 # import sys # sys.setrecursionlimit(1000000) # 设置递归的最大深度 # 总结 # 1.递归函数的定义 : ...