introduction

2021-07-22 08:07:27 星期四

学了计算机组成原理后,有了那么一点点整机概念,于是打算重新将stm32学一遍。

什么是寄存器

什么是寄存器映射

什么是存储器映射

可以通过C语言指针的操作方式访问内存单元,但这种通过绝对地址访问内存单元的方式不好记忆还容易出错。
我们可以根据每个单元功能的不同,以功能为名给这个内存单元取一个别名,这个别名就是我们经常说的寄存器。
这个给已经分配好地址的、有特定功能的内存单元取别名的过程就叫做寄存器映射。

存储器本身不具有地址信息,他的地址是由芯片厂商或用户分配的,给存储器分配地址的过程就称为存储器映射,
再分配一个地址叫重映射

芯片:

  1. 学会看丝印
  2. 懂得如何辨别正方向

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总线

  • 总线为什么要用开漏输出?

  1. 防止短路: 在一些情况下(比如总线), 多个GPIO口可能会连接在同一根线上, 存在某个GPIO输出高电平, 另一个GPIO输出低电平的情况. 如果使用推挽输出, 你会发现这个GPIO的VCC和另一个GPIO的GND接在了一起, 也就是短路了(凉凉了). 如果换成开漏输出呢? VCC和GND多了个电阻, 这样电路就是安全的.所以总线一般会使用开漏输出.
  2. 线与: 开漏输出还能实现线与, 减少一个与门, 简化电路.
  • 复用功能输出
    来自串口这个外设的输出——PA9

GPIO输出初始化顺序

  1. 确定GPIO是输入、通用输出、复用功能还是模拟输入(模式寄存器:MODER)
  2. 如果输出还要确定是推挽输出还是开漏输出。(输出类型寄存器:OTYPER)
  3. 配置输出的速度。(输出速度寄存器:OSPEEDR)
  4. 输出的时候内部的上/下拉电阻要不要开启(上拉/下拉寄存器:PUPDR)
  5. 具体要输出的内容(置位复位寄存器BSRR和数据输出寄存器ODR)
2021-07-24 19:43:37 星期六


固件库新建工程模板

  1. 先在本地新建一个文件夹用于存储固件库文件
  2. 在工程里面添加组,然后在里面添加文件
  3. 编译,会出现很多错误。打开stm32f4xx.h
  4. 在工具链中的C/C++选项卡里面指定头文件的目录
  5. 在工具链中的C/C++选项卡里面添加两个宏:....
  6. 把stm32f4xx_fsmc.c屏蔽掉,不编译
  7. 修改stm32f4xx_it.c文件
  8. 配置仿真器,而且这个配置不是一次配置成功之后就不会变的。
posted @ 2025-04-23 14:21  cswft  Views(32)  Comments(0)    收藏  举报