STM32 学习大纲(部分外设实验)

1、按键实验:
GPIO_ReadInputDataBit来获取位状态,高电平返回1.低电平返回0;


2、GPIO——位带操作:


3、启动文件详解:
系统启动流程:
在离开复位状态后,CM3做的第一件事就是读取下列两个32位整数的值。
1、从地址0x00000000 处取出MSP的初始值。
2、从地址0x00000004 处取出PC的初始值————这个值是复位向量,LSB必须是1.然后从这个值所对应的地址处取值。
CM3使用的是向下生长的满栈;


4、RCC——使用HSE/HSI配置时钟:
RCC:reset and control 复位和时钟控制器。

RCC主要作用——时钟部分:
设置系统时钟 SYSCLK、设置 AHB 分频因子(决定 HCLK 等于多少)、设置 APB2 分
频因子(决定 PCLK2 等于多少)、设置 APB1 分频因子(决定 PCLK1 等于多少)、设置各
个外设的分频因子;控制 AHB、APB2 和 APB1 这三条总线时钟的开启、控制每个外设的时
钟的开启。对于 SYSCLK、HCLK、PCLK2、PCLK1 这四个时钟的配置一般是:HCLK =
SYSCLK=PLLCLK = 180M,PCLK1=HCLK/2 = 90M,PCLK1=HCLK/4 = 45M。这个时钟配
置也是库函数的标准配置,我们用的最多的就是这个。
RCC框图刨析——时钟树:
HSE:告诉外部时钟信号,可以由有源晶振或者无源晶振提供,频率从 4-26MHZ
不等。当使用有源晶振时,时钟从 OSC_IN 引脚进入,OSC_OUT 引脚悬空,当选用无源
晶振时,时钟从 OSC_IN 和 OSC_OUT进入,并且要配谐振电容。HSE 我们使用 25M的无
源晶振。如果我们使用 HSE 或者 HSE经过 PLL倍频之后的时钟作为系统时钟 SYSCLK,
当 HSE 故障时候,不仅 HSE会被关闭,PLL也会被关闭,此时高速的内部时钟时钟信号
HSI会作为备用的系统时钟,直到 HSE恢复正常,HSI=16M。
锁相环PLL:主要作用是对时钟进行倍频,然后把时钟输出到各个功能部件。PLL有两个,
一个是主 PLL,另外一个是专用的 PLLI2S,他们均由 HSE 或者 HSI提供时钟输入信号。
系统时钟SYSCLK:主要来源:HSI、PLLCLK、HSE
AHB总线时钟HCLK:片上大部分外设的时钟都是经过HCLK分频得到的,至于AHB总线上的外设的时钟设置多少,
得等到我们使用该外设的时候才设置,我们这里只需粗线条的设置好 APB 的时钟即可。我们这里设置为 1 分频,即 HCLK=SYSCLK=180M。
APB2总线时钟HCLK2:APB2总线时钟 PCLK2 由 HCLK经过高速 APB2 预分频器得到;
APB1总线时钟HCLK1:APB1 总线时钟 PCLK1 由 HCLK经过低速 APB 预分频器得到;
LSE:32.768KHZ,通常是产生时分秒的时钟,经过连续的16次的二分频得到1(s)

时钟设置步骤:
1 /*
2 * 使用 HSE 时,设置系统时钟的步骤
3 * 1、开启 HSE ,并等待 HSE 稳定
4 * 2、设置 AHB、APB2、APB1 的预分频因子
5 * 3、设置 PLL 的时钟来源
6 * 设置 VCO 输入时钟 分频因子 m
7 * 设置 VCO 输出时钟 倍频因子 n
8 * 设置 PLLCLK 时钟分频因子 p
9 * 设置 OTG FS,SDIO,RNG 时钟分频因子 q
10 * 4、开启 PLL,并等待 PLL 稳定
11 * 5、把 PLLCK 切换为系统时钟 SYSCLK
12 * 6、读取时钟切换状态位,确保 PLLCLK 被选为系统时钟
13 */

其他时钟:
A、RTC时钟:
B、独立看门狗时钟:
C、I2S时钟:
D、PHY以太网时钟:
E、USB PHY时钟:
F、MCO时钟输出:

5、STM32中断:
系统异常和系统中断:10个和91个;

中断向量控制器NVIC:STM32的NVIC是Contex-M4的NVIC的一个子集;

中断编程:
在配置每个中断的时候一般有3个编程要点:
1、使能外设某个中断,这个具体由每个外设的相关中断使能位控制。
2、初始化NVIC_InitTypeDef结构体,配置中断优先级分组,设置抢占优先级和子优先级,使能中断请求;
3、编写中断服务函数:

6、EXTI——外部中断/事件控制器:
管理了控制器的23个中断/事件线。每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿检测。
EXTI可以实现对每个中断/事件线进行单独配置,可以单独配置为中断或者事件,以及触发事件的属性。
EXTI可分为两大部分功能,一个是产生中断,另一个是产生事件,这两个功能从硬件上就有所不同。
中断/事件线:

7、SysTick——系统定时器:
SysTick——系统定时器是属于CM4内核中的一个外设,内嵌在NVIC中。
系统定时器是一个 24bit的向下递减的计数器,计数器每计数一次的时间为 1/SYSCLK,一般我们设置
系统时钟 SYSCLK等于 180M。当重装载数值寄存器的值递减到 0的时候,系统定时器就
产生一次中断,以此循环往复。

系统定时器一般用于操作系统,用于产生时基,维持操作系统的心跳;

编程要点:
1、设置重装载寄存器的值;
2、清除当前数值寄存器的值;
3、配置控制与状态寄存器

8、通讯的基本概念:
计算机设备与设备之间或集成电路和集成电路之间常常需要进行数据传输;

串行通讯与并行通讯:
串行通讯:是指设备之间通过少量数据信号线(一般是8跟以下),地线以及控制信号线,按数据位形式一位一位地传输数据的通讯方式。
并行通信:一般是指使用8、16、32及64根或更多的数据线进行传输的通讯方式,可以同时传输多个数据位的数据;
全双工、半双工及单工通讯:
全双工:在同一时刻,两个设备之间可以同时收发数据;
半双工:两个设备之间可以收发数据,但不能在同一时刻进行;
单工:在任何时刻都只能进行一个方向的通讯,即一个固定为发送设备,另一个固定为接受设备;

同步通讯与异步通讯:
根据通讯的数据同步方式,又分为同步和异步两种,可以根据通讯过程后中是否有使用到时钟信号进行简单的区分;

在同步通讯中,收发设备双方会使用一根信号线表示时钟信号,在时钟信号的驱动下双方进行协调,同步数据;
在异步通讯中不使用时钟信号进行数据同步,他们直接在数据信号中穿插一些同步用的信号位,或者把主体数据进行 打包,以数据帧的格式传输数据;
在同步通讯中,数据信号所传输的内容绝大部分就是有效数据,而异步通讯中会包含
有帧的各种标识符,所以同步通讯的效率更高,但是同步通讯双方的时钟允许误差较小,
而异步通讯双方的时钟允许误差较大。
通讯速率:
衡量通讯性能的一个非常重要的参数就是通讯速率,通常以比特率来表示,即每秒钟传输的二进制位数,单位为比特每秒。

9、USART——串口通讯:
串口通讯是一种设备间非常常用的串行通讯方式,简单便捷,大部分电子设备都支持该通讯方式,在调试设备时也经常用该通讯方式输出调试信息;

在计算机科学里,大部分复杂的问题都可以通过分层来简化。
如芯片被分为内核层和片上外设;STM32 标准库则是在寄存器与用户代码之间的软件层。对于通讯协议,我们也
以分层的方式来理解,最基本的是把它分为物理层和协议层。物理层规定通讯系统中具有
机械、电子功能部分的特性,确保原始数据在物理媒体的传输。协议层主要规定通讯逻辑,
统一收发双方的数据打包、解包标准。简单来说物理层规定我们用嘴巴还是用肢体来交流,
协议层则规定我们用中文还是英文来交流。

物理层:控制器A - 电平转换芯片—DB9接口————rs232标准————DB9接口—电平转换芯片— 控制器B
协议层:发送设备通过自身的TXD接口传输到接收设备的RXD接口。数据包内容;通讯双方的数据格式要约定一致才能正常收发数据;

STM32的USART简介:
USART:即通用同步异步收发器,可以灵活地与外部设备进行全双工数据交换。

引脚 寄存器 控制器 校验控制 中断控制


10、DMA——直接存储区访问:
DMA(direct memory access)为实现数据高速在外设寄存器与存储器之间或者存储器与存储器之间传输提供了高速的方法。
能快速移动内存数据。

外设一般指外设的数据寄存器;
存储器一般是指片内SRAM、外部存储器、片内Flash等

DMA功能框图:
外设通道选择:......要解决的主要问题是决定哪一个外设作为该数据流的源地址或者目标地址。
仲裁器:
FIFO:如果数据存储量达到阈值级别时,FIFO 内容将传输到目标中;FIFO 对于要求源地址和目标地址数据宽度不同时非常有用,
存储器端口,外设端口:DMA控制器通过存储器端口和外设端口与存储器和外设进行数据传输;
DMA控制器的功能是快速转移内存数据,需要一个连接至源数据地址的端口和一个连接至目标地址的端口。
DMA1 不能实现存储器到存储器传输。
编程端口:
DMA数据配置:
DMA传输模式:DMA2 支持全部三种传输模式,而 DMA1 只有外设到存储器和存储器到外设两种模式
源地址和目标地址:
流控制器:流控制器主要涉及到一个控制 DMA传输停止问题; 很多情况下,我们明确知道传输数据的数目,比如要传 1000 个或者 2000 个数据,这样我们就可以在传输之前设置 DMA_SxNDTR 寄存器为要传输数目值,DMA控制器在传输完这么多数目数据后就可以控制 DMA停止传输
循环模式:
循环模式相对应于一次模式。一次模式就是传输一次就停止传输,下一次传输需要手
动控制,而循环模式在传输一次后会自动按照相同配置重新传输,周而复始直至被控制停
止或传输发生错误。
传输类型:
直接模式:默认情况下,DMA 工作在直接模式,不使能 FIFO 阈值级别。
双缓冲模式:
DMA中断:
DMA初始化结构体详解:
结构体xxx_InitTypeDef和库函数xxx_Init配合使用是标准库精髓所在,理解了xxx_InitTypeDef 每个成员意义基本上就可以对该外设运用自如了。

常用存储器介绍:
存储器种类:
存储器是计算机结构的重要组成部分。 存储器是用来存储程序代码和数据的部件,有
了存储器计算机才具有记忆功能。


存储器按其存储介质特性主要分为“易失性存储器”和“非易失性存储器”两大类。
其中的“易失/非易失”是指存储器断电后,它存储的数据内容是否会丢失的特性。由于一
般易失性存储器存取速度快,而非易失性存储器可长期保存数据,它们都在计算机中占据
着重要角色。在计算机中易失性存储器最典型的代表是内存,非易失性存储器的代表则是
硬盘。
RAM存储器:
DRAM:
SDRAM:
DDR SDRAM:
SRAM:
非易失性存储器:
ROM存储器:
MASK ROM:
OTPROM:
EPROM:基本淘汰,被EEPROM取代;
EEPROM:
FLASH存储器:
NOR FLASH:
NAND FLASH:
由于两种 FLASH 存储器特性的差异,NOR FLASH 一般应用在代码存储的场合,如嵌
入式控制器内部的程序存储空间。而 NAND FLASH 一般应用在大数据量存储的场合,包
括 SD卡、U盘以及固态硬盘等,都是 NAND FLASH 类型的。


I2C——读写EEPROM
I2C 通讯协议(Inter-Integrated Circuit)是由 Phiilps 公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要USART、CAN等通讯协议的外部收发设备,
现在被广泛地使用在系统内多个集成电路(IC)间的通讯;
物理层:
协议层:I2C 的协议定义了通讯的起始和停止信号、数据有效性、响应、仲裁、时钟同步和地
址广播等环节。

I2C的基本读写过程:
通讯的起始和停止信号:
数据有效性:
地址及数据方向:
响应:

STM32的I2C特性及架构:
STM32的I2C外设简介:
通讯引脚:
时钟控制逻辑:
数据控制逻辑:
整体控制逻辑:
通讯过程:
主发送器:
主接收器:

SPI——读写串行FLASH:


暂时学到这儿,以后工作中在补充;

猜你喜欢

转载自blog.csdn.net/Cheatscat/article/details/80582090