第0课【初始STM32】开发环境 内核 外设 寄存器

基本知识框架

在这里插入图片描述

课堂笔记

准备工作

在开始学习STM32之前,要先将相关的开发环境和对应串口下载程序准备好。

开发环境

集成开发环境指的是将代码编辑器,编译器,调试器等等整合一体化的软件工具包。通过它提供的软件及辅助工具,我们可以轻松的完成源代码编辑,源代码编译,固件调试等工作
对于STM32,目前常用的集成开发环境是的是Keil(收费)STM32CubeIDE(免费)

Keil

在这里插入图片描述
由Keil公司(已被ARM公司收购)开发,最正统,最老牌的集成开发环境,使用收费但效率较高的ARMCC编译器
要想使用这个软件,需要访问Keil官网

  1. MDK
  2. 对应芯片的Pack包

破解版可以使用Lisene生成器Keygen(2032)(可选,有能力的可以支持正版)

STM32CubeIDE

在这里插入图片描述
由ST公司开发,完美适配STM32外设的集成开发环境,使用的是免费的且较通用的ARM GCC编译器
要想使用这个软件,需要到ST官网

  1. STM32CubeIDE

程序下载

准备好集成开发环境以后,就有了生成固件的能力。要想将固件烧录到STM32中,还需要下载程序
下载固件到STM32的方式有很多种,常用的有

  • ISP在系统编程:通过CH340芯片,使STM32运行系统自带的自举程序,从而将串口传输进来的数据烧录到Flash中。特点是无需编程器,操作简便

STM32的启动模式
STM32单片上有BOOT0和BOOT1两个引脚,通过在这两个引脚上加上不同的电平,可以使得STM32进入不同的启动模式

BOOT0BOOT1STM32启动模式
0X内部Flash
10系统存储器(存储着系统自带的自举程序,这部分的程序不可修改,运行程序可以讲串口传入的数据保存到内部Flash中)
11内部sRam
  • JLINK/ULINK:通过SWD或JTag接口,将程序烧录到STM32自带的Flash中。通过这两种方式不仅可以下载程序到STM32,还可以完成后续对此程序的在线调试。特点是连接稳定;需要额外硬件——编程器;既可下载程序,还可以调试程序

我个人目前使用的,是在Linux平台使用arm gcc(编译器工具集)+make(项目构建工具)+vim(编辑工具)的组合,这套工具虽然看起来比较“原始”,但是已经能满足我学习的需求,同时还可以根据个人习惯进行高度自定义程,对编译原理的理解也有很大帮助,具体可以查看Github上的项目

PORKWOTONLEE/Sinuxtm32

FlyMCU

在这里插入图片描述

FlyMCU是一款串口程序下载软件。通过与指南者STM32上CH340芯片配合,可以轻松完成固件的烧录

STM32系统架构

在这里插入图片描述
本质上STM32也是计算机,从框架图可以清晰地看到它采用哈佛结构,指令总线I-Code与数据总线D-Code相互独立,这使得取指令操作和数据访问互不冲突,极大的提升了性能

上图可以直观的看出STM32中每个组件的名称,以及组件之间的联系。为了便于理解,官方将内部的元器件分为:

  • 驱动单元:个人理解为主动获取数据的组件,包括,S-Code,D-Code,DMA1和DMA2
  • 被动单元:个人理解为被动提供数据的组件,包括Flash,sRam,AHB,APB1,APB2的等等

为了便于描述,我将内部分元器件分为内核外设

内核

指的是CPU,是STM32内部专门用于处理数据的核心组件

Cortex-M3

Cortex-M3是一颗32位的处理器,它拥有32位的数据接口,32位的存储器接口,32位的寄存器接口

外设

指的是除了CPU以外,负责辅助CPU进行数据处理(包括数据获取,数据传输,数据存储等)的其他组件。包括DMA,总线,总线矩阵,GPIO等

DMA

在这里插入图片描述
DMA(Direct Memory Access直接存储器访问)是一种可以大大减轻CPU工作压力的一种数据传输方式。

DMA的基本原理
常规方式进行外设数据访问时,需要CPU中的寄存器参与整个数据访问流程,此时的CPU资源就会被占用,不能进行其他任务
但是对于数据访问这样的操作,其实可以无需CPU参与。DMA方式通过提供一条专属数据通道以及数据传输控制器,实现直接读取外设中的数据。无需CPU参与数据获取,使得CPU能更专注于自己的工作

Flash

在这里插入图片描述

Flash属于ROM(Read Only Memory只读存储器),用于存放不需要经常变动的数据,是非易失性数据存储器的一种。

非易失性存储器
这类存储器即使断电,数据依旧能够很好的保存,常用于存放不需要改动或者不经常需要改动的数据,例如BootLoader,BIOS,操作系统这类固件

sRAM

在这里插入图片描述

sRam属于RAM(Random Access Memory随机访问存储器),用于存放临时数据,是易失性数据存储器的一种。

易失性存储器
这类存储器读写速度极快,比Rom要快很多,但是如果断电的话,存储器中的数据就会丢失,一般是用于存放经常需要改动的数据,例如程序运行中的变量

AHB

在这里插入图片描述

AHB(Advance High Performance Bus高性能总线)总线将高性能部件连接起来,并为它们提供高速可靠的数据传输通道。

AHB总线相关
它是AMBA v2.0总线协议的一部分。由主机master、从机slave,总线总裁器、数据多路选择器和地址多路选择器等组成。AHB总线常用用于高性能、高时钟频率的系统架构,典型的应用如Arm架构中的Ram,Flash,DMA之间的连接。

APB1和APB2

在这里插入图片描述
APB(Advance Peripheral Bus高级外设总线)属于AHB总线中的一部分。和AHB总线不同,它们主要负责对带宽需求较低的外设之间的连接。例如UART,I2C等。通过APB桥接器,也可以让低速外设接入AHB总线

APB1和APB2之间的联系

  • 相同点:都用于连接低速外设
  • 不同点:APB1支持低速状态的部件(DA,USB,I2C,SPI,串口2345,普通TIM),APB2支持高速状态的部件(AD,串口1,高级TIM)
SDIO

SDIO总线是从SD卡接口发展过来的总线协议,它支持SD卡数据的传输,同时还可以和支持SDIO的设备通信

RCC

RCC主要指时钟模块(包括STM32内部高低速时钟和外部高低速时钟),时钟是STM32软硬件系统运行的基础。通过时钟,STM32中的各个组件才能以同样的步调运作。有如人类的心跳一般

寄存器的使用

面对不同任务,选用的外设是大不同的,大多数时候,进行开发或研究的重点会放在外设使用上,STM32内部的架构是不会有太大变动的
而使用外设,其实是在使用外设寄存器。STM32的外设寄存器也是一种数据存储器,大小是32位,寄存器中的存储内容直接和外设相关。通过对寄存器中的数据的读写,可以实现修改外设工作模式,输入输出数据,获取设备状态等等
在这里插入图片描述

存储器映射

STM32的架构图中,Flash,sRAM,FSMC和AHB到APB桥上的外设都排列在一个4GB的地址空间内。将这块地址空间看作存储器,并为存储器分配地址,分配地址的过程被称为存储器的映射,通过分配好的地址,可以找到对应的部件

CPU能访问的地址空间大小为何是4GB
按照我的理解,CPU能访问的地址空间应该是根据访问存储器的数据总线宽度来决定的,STM32中,数据总线的宽度为32位,这就意味着访问存储器时能访问到的数据为2^32字节,也就是4GB的地址空间

Block0~Block7

这块4GB的地址空间被分成8个Block,每个Block大小512MB。每块Block上都对应着不同的外设。由于空间很大,所以每块Block的空间不一定全部被使用
在这里插入图片描述

片上外设地址映射

上述的Block中,Block2是最常用的部分,通过Block2地址范围中的地址,可以访问到STM32中的片上外设

基地址
片上外设Block2的地址范围中,起始地址0x4000 0000也被称为基地址。其他Block也一样

外设总线基地址映射

片上外设Block2的地址范围可以被分为三部分:
在这里插入图片描述
根据对带宽的不同需求,不同速度的外设应该被分配到匹配的总线上
在这里插入图片描述

外设基地址映射

每根总线上挂载着各种外设。每个外设有自己对应的地址范围,也有自己的基地址
以GPIO口为例:
在这里插入图片描述

外设寄存器地址映射

在每个外设的地址范围内又有许多不同的寄存器每个寄存器对应一个地址,地址指向的空间大小为32位,也就是4个字节。通过寄存器的地址对寄存器中的内容进行读或写,可以操纵GPIO的输入输出,工作模式和查看GPIO状态
在这里插入图片描述

基本知识框架Xmind文件下载

链接:资源下载

  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值