stm32学习笔记(1)
什么是寄存器
要知道寄存器,首先要知道存储器。存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配的,给存储器分配地址的过程就称为存储器映射。而在存储器的区域,有很多单元,通过控制单元我们可以驱动外设进行工作,但是每次都通过一堆的数字来进行操作相当不便利,于是就有人想出我们可以给这些单元根据不同的功能来给这些内存取个别名,方便使用,这个别名就是我们经常说的寄存器。
GPIO
上面是GPIO的硬件结构框图。整个接狗狗框图大概可以分为两个部分,上面的部分是读出的部分,下面的部分是写入的部分。
①
部分为我们能够在开发板上面看到的引脚(像针一样的那个东西),两个保护二极管是用来保护芯片的(当外部给的电压过高或者过低,二极管会导通,从而保护芯片)。
②
部分其实就是一个互补开关电路
在实际中我们一般会使用推挽输出,如果要使用开漏输出则一般要接一个上拉电阻,从而使得能够输出高电平。
③
为输出数据寄存器(ODR:output data register)
因此我们通过修改输出数据寄存器的值就可以修改GPIO 引脚的输出电平。而“置位/复位寄存器 GPIOx_BSRR”可以通过修改输出数据寄存器的值从而影响电路的输出`
④
为复用功能输出
“复用功能输出”中的“复用”是指STM32 的其它片上外设对GPIO 引脚进行控制,此时GPIO 引脚用作该外设功能的一部分,算是第二用途。
⑤
为输入数据寄存器
看GPIO 结构框图的上半部分,GPIO 引脚经过内部的上、下拉电阻,可以配置成上/下拉输入,然后再连接到施密特触发器,信号经过触发器后,模拟信号转化为0、1 的数字信号,然后存储在“输入数据寄存器GPIOx_IDR”中,通过读取该寄存器就可以了解GPIO 引脚的电平状态。
使用寄存器点亮LED
经过对GPIO简单的了解之后我们就可以尝试用寄存器来点亮一个LED灯了(假设绿灯)。首先我们的知觉告诉我们需要将PB0的引脚设为低电平,这样就可以使得LED灯点亮。
我们需要做的步骤如下所示:
- 时钟为单片机的心脏,我们我们首先要初始化
- 其次我们要设定GPIO的状态为输入状态还是输出状态
- 最后我们要在指定的引脚这里将PB0设为低电平
参考: 野火stm32HAL库开发指南