STM32F429IGT6寄存器映射点亮LED灯

版权声明:均是学习笔记、心得,如有冒犯,请指出,会及时处理。https://blog.csdn.net/qq_27485531 https://blog.csdn.net/qq_27485531/article/details/82780300

原理图如下(以PH10引脚的连接的LED灯为例)

我们只需要给PH10引脚一个低电平,那么LED即可点亮。

内部GPIO原理图如图所示,红色箭头即为GPIO输出方向,只要给置位/复位寄存器写数据数据就会传到输出数据寄存器(或者直接给输出数据寄存器赋值),经过推挽输出电路然后输出高低电平。

首先配置与PH10引脚有关的寄存器(寄存器映射)

通过查阅stm43f4的参考手册,相关寄存器映射如下(下面会讲到每个寄存器都是什么功能)

接下来按照如下顺序配置相关寄存器

1. GPIO 模式
首先我们把连接到 LED 灯的 PH10引脚配置成输出模式,即配置 GPIO 的 MODER寄存器,MODER中包含 0-15 号引脚,每个引脚占用 2个寄存器位。这两个寄存器位设置成“01”时即为 GPIO的输出模式。

2. 输出类型
GPIO输出有推挽和开漏两种类型,我们了解到开漏类型不能直接输出高电平,要输出高电平还要在芯片外部接上拉电阻,不符合我们的硬件设计,所以我们直接使用推挽模式。配置 OTYPER寄存中的 OTYPER10寄存器位,该位设置为 0时 PH10引脚即为推挽模式。

3. 输出速度
GPIO引脚的输出速度是引脚支持高低电平切换的最高频率,本实验可以随便设置。此处我们配置 OSPEEDR 寄存器中的寄存器位 OSPEEDR10即可控制 PH10的输出速度。

4. 上/下拉模式
当 GPIO 引脚用于输入时,引脚的上/下拉模式可以控制引脚的默认状态。但现在我们的 GPIO 引脚用于输出,引脚受 ODR寄存器影响,ODR寄存器对应引脚位初始初始化后默认值为 0,引脚输出低电平,所以这时我们配置上/下拉模式都不会影响引脚电平状态。但因此处上拉能小幅提高电流输出能力,我们配置它为上拉模式,即配置 PUPDR寄存器的 PUPDR10 位,设置为二进制值“01”。

5. 控制引脚输出电平
在输出模式时,对 BSRR寄存器或ODR 寄存器写入参数即可控制引脚的电平状态。

6. 开启外设时钟
设置完 GPIO的引脚,控制电平输出,以为现在总算可以点亮 LED 了吧,其实还差最后一步。
在《STM32芯片架构》的外设章节中提到 STM32 外设很多,为了降低功耗,每个外设都对应着一个时钟,在芯片刚上电的时候这些时钟都是被关闭的,如果想要外设工作,必须把相应的时钟打开。

STM32 的所有外设的时钟由一个专门的外设来管理,叫 RCC(reset and clockcontrol),RCC 在《 STM32 中文参考手册》的第六章。所有的 GPIO都挂载到 AHB1 总线上,所以它们的时钟由 AHB1外设时钟使能寄存器(RCC_AHB1ENR)来控制,其中 GPIOH 端口的时钟由该寄存器的位 7 写 1 使能,开启GPIOH端口时钟。

具体代码实现如下

猜你喜欢

转载自blog.csdn.net/qq_27485531/article/details/82780300