introduction
|
2021-07-22 08:07:27 星期四
学了计算机组成原理后,有了那么一点点整机概念,于是打算重新将stm32学一遍。 |
什么是寄存器
什么是寄存器映射
什么是存储器映射
可以通过C语言指针的操作方式访问内存单元,但这种通过绝对地址访问内存单元的方式不好记忆还容易出错。
我们可以根据每个单元功能的不同,以功能为名给这个内存单元取一个别名,这个别名就是我们经常说的寄存器。
这个给已经分配好地址的、有特定功能的内存单元取别名的过程就叫做寄存器映射。
存储器本身不具有地址信息,他的地址是由芯片厂商或用户分配的,给存储器分配地址的过程就称为存储器映射,
再分配一个地址叫重映射。
芯片:
- 学会看丝印
- 懂得如何辨别正方向
STM32芯片架构简图

I: instructions指令总线
S: system系统总线
D: data数据总线
总线矩阵的作用?
内部的总线接口

GPIO功能框图

176个引脚中144个为GPIO,每一个GPIO引脚都有如图所示的电路图
-
保护二极管
I/O引脚最高5V,如果超过5V,电流向外部流,不会往芯片内部流。主要用来保护芯片内部电路。 -
上/下拉电阻
通过配置上下拉电阻开关,可以控制引脚的默认状态电平。
当开启上拉时引脚默认电压为高电平,开启下拉时,引脚默认电压为低电平,这样就可以消除引脚不定状态的影响。
当然也可以将上拉和下拉的开关都关断,这种状态我们称为浮空模式,一旦配置成这个
模式,引脚的电压是不确定的,如果用万用表测量此模式下管脚电压时会发现只
有 1 .几伏,而且还不时改变,所以一般情况下我们都会给引脚设置成上拉或者
下拉模式,使它有一个默认状态。 -
推挽输出
![]()
推挽输出驱动能力强,速度快。 -
开漏输出
![]()
当INT=0时,OUT=0,输出低电平。
但INT=1时,NMOS截止,OUT既不输出高电平也不输出低电平,处于高阻态。
若要输出高电平,只能由上拉电阻外部上拉。
开漏输出具有“线与”的功能,一个为低,全部为低,多用于IIC和SMBUS总线 -
总线为什么要用开漏输出?
- 防止短路: 在一些情况下(比如总线), 多个GPIO口可能会连接在同一根线上, 存在某个GPIO输出高电平, 另一个GPIO输出低电平的情况. 如果使用推挽输出, 你会发现这个GPIO的VCC和另一个GPIO的GND接在了一起, 也就是短路了(凉凉了). 如果换成开漏输出呢? VCC和GND多了个电阻, 这样电路就是安全的.所以总线一般会使用开漏输出.
- 线与: 开漏输出还能实现线与, 减少一个与门, 简化电路.
- 复用功能输出
来自串口这个外设的输出——PA9
GPIO输出初始化顺序
- 确定GPIO是输入、通用输出、复用功能还是模拟输入(模式寄存器:MODER)
- 如果输出还要确定是推挽输出还是开漏输出。(输出类型寄存器:OTYPER)
- 配置输出的速度。(输出速度寄存器:OSPEEDR)
- 输出的时候内部的上/下拉电阻要不要开启(上拉/下拉寄存器:PUPDR)
- 具体要输出的内容(置位复位寄存器BSRR和数据输出寄存器ODR)
| 2021-07-24 19:43:37 星期六 |
固件库新建工程模板
- 先在本地新建一个文件夹用于存储固件库文件
- 在工程里面添加组,然后在里面添加文件
- 编译,会出现很多错误。打开stm32f4xx.h
- 在工具链中的C/C++选项卡里面指定头文件的目录
- 在工具链中的C/C++选项卡里面添加两个宏:....
- 把stm32f4xx_fsmc.c屏蔽掉,不编译
- 修改stm32f4xx_it.c文件
- 配置仿真器,而且这个配置不是一次配置成功之后就不会变的。
The limit can be broken, the perfection can't be stopped.



浙公网安备 33010602011771号