STM32理论笔记

一 STM32简介

1.1 stm32是什么

stm32是一类芯片的总称,由ST(意法半导体)公司生产的一种32位微控制器。

1.2 stm32芯片型号规格介绍

以STM32F103C6T6为例:

ST:   厂家(意法半导体)
M:    微控制单元
32:   32位寻址位宽(32个bit表示一个地址)
F103: 产品系列(通用型、Cotex-M3内核、最大主频72MHz)
C8T6: 产品参数

在这里插入图片描述
来源:B站UP铁头山羊

1.3 存储密度

根据存储容量(Flash)的不同划分位不同的等级,也就说芯片中能烧录进去程序的大小,若所编写的程序太大的话,芯片是装不下的
img

1.4 最小系统板介绍

最小系统板:就是提供STM32芯片最基本工作条件的电路板,STM32芯片的运行,需要供电,需要晶振,我们将程序下载到开发板,还需要下载和调试接口,这些功能会集成到最小系统板上,通过PCB连接到STM32芯片对应的引脚。而这些功能没有用到的引脚,会被引出来供开发者使用。
在这里插入图片描述
高速晶振:给CPU和大部分外设提供时钟
低速晶振:给RTC模块提供时钟
复位按键:每次按下,程序会从头执行

1.5 STM32启动方式

在这里插入图片描述

二 GPIO和AFIO

2.1 芯片的引脚分布

2.1.1 特殊功能引脚和普通IO引脚

在这里插入图片描述

2.1.2 普通IO引脚的命名规则

在这里插入图片描述

2.1.3 IO复用

在这里插入图片描述
一个芯片的引脚数量是一定的,以C8T6为例只有48个引脚,再扣除11个特殊功能引脚只有37个引脚,从设计者角度希望芯片功能更加强大,往芯片里塞更多的模块当芯片模块足够多该芯片就更加强大因此会出现引脚不够用的情况所以会采用IO复用功能。
通用功能:由编程人员直接对IO脚进行读写
复用功能:IO引脚的控制权交给其他模块,如定时器,串口等,编程人员对该模块进行编程从而间接对IO引脚进行控制,复用功能可有多个
复用的好处:让有限的IO引脚实现更多的功能,闲置的引脚可以当作普通IO来用

2.1.4 IO重映射

在这里插入图片描述
当同时使用串口和定时器时PA9和PA10不知道归谁,这时候就需要IO重映射

2.2 GPIO

2.2.1 GPIO简介

在这里插入图片描述芯片内部最核心的就是CPU像人的大脑,只能负责执行指令或进行运算,本身无法进行独立的功能,因此需要在芯片内部加入各种独立的功能模块,这些模块统一叫做芯片的片上外设。GPIO就是一种片上外设,负责对引脚的高低电平的读写。

2.2.2 GPIO寄存器组

在这里插入图片描述
STM32编程模型最中央是一个CPU,在其周围有许多片上外设负责协助CPU完成一些具体的功能,编程的时候程序是在CPU里执行,但最终目的是操纵这些片上外设去实现具体的功能,这就要求CPU与这些外设进行通信,CPU通过读写模块的寄存器来对模块进行操作,把这些寄存器加起来就是寄存器组。

2.2.3 GPIO的八种工作模式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述输入模式读取GPIO的值时不会相互产生干扰,输出模式要么CPU直接控制GPIO,要么通过其他外设间接控制GPIO
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2.4 IO的最大输出速度

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2.5 GPIO的内部结构

在这里插入图片描述

2.3 LED编程

2.3.1 LED的推挽接法和开漏接法

在这里插入图片描述
开漏输出只能输出低电平,外接上拉电阻可输出高电平。

2.3.2 编程流程

在这里插入图片描述
在这里插入图片描述
STM32片上外设都是时序电路,对于时序电路只有在外部时钟激励下才能工作,默认情况下这些片上外设时钟都是关闭的
在这里插入图片描述

2.3.4 GPIO的读取和写入

在这里插入图片描述

2.4 按键编程

2.4.1 按钮的电路设计

在这里插入图片描述
外接上拉电阻情况下按钮按下读IDR寄存器可读0,按钮松开可读1

IO处于输入模式下内部有两个电阻,当选择IO模式时选择输入上拉模式可等效为外接上拉电阻情况,可省下一个元件。

2.4.2 按键消抖

在这里插入图片描述

2.5 AFIO

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
PA8为ch1 PA9为ch2 PA10是ch3 PA11是ch4
PA9是TX PA10为RX 想同时使用串口和定时器就会出现冲突,使用AFIO就可以解决这个冲突(查表)
在这里插入图片描述
在这里插入图片描述

2.5.1 AFIO相关API

在这里插入图片描述
在这里插入图片描述

三 中断

3.1 中断原理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 中断优先级

在这里插入图片描述
在这里插入图片描述
一:假设在执行常规程序时在某个点中断源A触发了,程序转而去处理A的中断响应函数,在此期间中断源B触发了,考虑到B是否会对A进行中断嵌套,比较两者抢占优先级,B的数值更小于是程序转而去处理B的中断响应函数结束之后返回A最后执行常规程序

二:在执行常规程序时发生了中断A转而处理A的中断响应函数再次期间发生了中断B和C,考虑嵌套,B数值高于 A不产生影响,C数值相等,BC会进行中断排队
在这里插入图片描述
在这里插入图片描述

3.3 NVIC

3.3.1 NVIC简介

在这里插入图片描述
NVIC位于内核(CPU)内部
在这里插入图片描述

3.3.2 NVIC内部结构

在这里插入图片描述

3.3.3 中断向量表

在这里插入图片描述
在这里插入图片描述

3.3.4 NVIC标准库编程

在这里插入图片描述
设置几个bit位给抢占优先级和子优先级
在这里插入图片描述
在这里插入图片描述

3.3.5 中断编程流程

在这里插入图片描述
在这里插入图片描述
NVIC位于内核内部默认情况下内核时钟开启
在这里插入图片描述
在这里插入图片描述

3.4 EXTI

3.4.1 EXTI简介

在这里插入图片描述

3.4.2 EXTI工作原理

在这里插入图片描述
在这里插入图片描述

中断处理需要CPU介入

3.4.3 EXTI通道

在这里插入图片描述
在这里插入图片描述
多路信号同时检测
在这里插入图片描述
在这里插入图片描述

3.4.4 EXTI寄存器组

在这里插入图片描述
20个bit位控制20个通道

3.4.5 EXTI标准库编程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.5 EXTI按键编程实验

3.5.1 实验流程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

NVIC管理中断源 EXTI5-EXTI9共用一个中断源
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
主要理解NVIC管理中断源

3.6 单片机编程原则

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四 USART与串口通信

4.1 串口通信

4.1.1 串口简介

在这里插入图片描述
在这里插入图片描述

4.1.2 串口接线

在这里插入图片描述

4.1.3 数据帧

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
传数据由小到大
上图数据位为11001000(LSB)
实际书写习惯由MSB到LSB 00010011(0x13)
在这里插入图片描述
在这里插入图片描述
1 4使用最多
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对于连续发送数据传输过程中没有空闲,使用停止位对数据帧进行分割,起始位表示数据的开始

4.1.4 异步通信与波特率

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.1.5 硬件流控

在这里插入图片描述
有时候数据发送过快会导致数据丢失,接收方加个反馈信号
在这里插入图片描述

4.2 USART

4.2.1 USART简介

在这里插入图片描述
在这里插入图片描述
前三个同步异步模式均可,后两个只能工作在异步模式下
在这里插入图片描述

4.2.2 USART工作原理

在这里插入图片描述
一个数据线逐个发送/多个数据线同时发送
在这里插入图片描述
一次性写8个bit位,发送的时候是单根线发送所以要进行并转串
收的时候串行接受,CPU一次性读取8个bit位并行读取,所有要串转并
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2.3 USART参数配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2.4 数据发送过程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2.5 数据的接受过程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.3 USART标准库编程

4.3.1 实验介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
只能TX RX进行重映射,可搬到PB6 PB7
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.3.2 标准库接口介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.3.3 USART初始化流程介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.4 串口中断

4.4.1中断接收简介

在这里插入图片描述
轮询缺点:代码执行时间不确定

4.4.2 配置中断源

在这里插入图片描述
七个标志位都能产生中断
在这里插入图片描述
C8T6只有60路中断,如果不共用 5个串口就是5x7=35个中断 中断不够用 以此来节约中断源数量
在这里插入图片描述
给标志位加开关(中断使能位)可以分别屏蔽
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.4.3 中断接收的编程思路

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.4.4 中断发送的编程思路

在这里插入图片描述

五 RCC与时钟树

5.1 时钟树

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
降低芯片功耗
在这里插入图片描述

5.2 RCC与时钟树编程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六 IIC

6.1 IIC简介

在这里插入图片描述
模块多的时候串口不够用
在这里插入图片描述
在这里插入图片描述

6.2 主机与从机

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.3 IIC通信协议

在这里插入图片描述

空闲:SCL=H, SDA=H(高电平)

正常情况下SCL=L,SDA可以变化;SCL=H,SDA保持不变

起始位:SCL=1,SDA=⬇(下降沿)

停止位:SCL=1,SDA=⬆(上升沿)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.4 IIC模块的使用方法

6.4.1 IIC模块简介

在这里插入图片描述

6.4.2 寄存器组与结构框图

在这里插入图片描述

6.4.3 IIC初始化

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.4.4 主机数据发送

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.4.5 主机数据接收

在这里插入图片描述
在这里插入图片描述

IIC是串行通信方式,双缓冲结构可实现并行和串行的转换
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
数据帧只有一个字节时
在这里插入图片描述

数据帧有2个字节时
在这里插入图片描述
数据帧大于2字节时
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.4.6 MPU6050

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

七 定时器

定时器与时钟树的关系:定时器为时钟树上的一片树叶,以一块手表为例
在这里插入图片描述
把手表当作定时器,石英晶振为时钟树石英晶振为手表提供时钟信号,手表则用来看时间
在这里插入图片描述定时器内部结构

7.1 时基单元

在这里插入图片描述
时钟来源
在这里插入图片描述
在这里插入图片描述
APB分频系数为1则为1倍频,大于1则为2倍频
例:
在这里插入图片描述
预分频器
在这里插入图片描述
CNT有三种计数方向
在这里插入图片描述
RCR
在这里插入图片描述
注:只有高级定时器才有重复计数器RCR
阴影前面的为活动寄存器,阴影为影子寄存器
写入的值会先进入影子寄存器进行缓冲,产生update事件后才会进入活动寄存器,这样的缓冲机制会更安全(预加载功能)
PSR和RCR的预加载功能是强制开启的ARR可手动
在这里插入图片描述
定时器种类
在这里插入图片描述
在这里插入图片描述

7.2 输出比较

输出比较就是定时器向外输出精确定时的方波信号
在这里插入图片描述
八种模式
在这里插入图片描述

7.3 输入捕获

	定时器有4个通道,既可以作为输入也可以作为输出,作为输入的时候可以把外部信号通过通道输入进来然后使用定时器对这个信号的时间参数进行测量这种功能就叫做定时器的输入捕获。作输出的时候定时器向外输出精确的方波信号这种功能叫做输出比较。

在这里插入图片描述
外部信号通过通道一输入到定时器中,让通道一工作在输入捕获模式下,每当检测到外部信号发生变化时CNT的值就会被拍照保存到CCR寄存器中,然后读取CCR寄存器的值,这样就知道在什么时间发生的信号变化
输入捕获:捕捉信号变化的时间点并保存。
在这里插入图片描述
在这里插入图片描述
信号来自通道本身为直接,信号来自对侧通道则为间接

7.4 从模式控制器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
从模式禁止:不使用从机功能 使能:通过TRGI把实基单元的开关状态输出出去
复位模式:使用TRGI的上升沿来复位CNT,同时产生Update事件 更新:每产生一个Update事件就向TRGO输出一个脉冲
门模式:使用TRGI控制时基单元高电平导通,低电平断开
触发模式:使用TRGI的上升沿来启动定时器
外部时钟模式1:把TRGI作为定时器的时钟

TRGI来源
在这里插入图片描述
在这里插入图片描述

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Flyik

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值