寄存器是什么?怎么操作寄存器点亮LED灯?

电子说

1.3w人已加入

描述

首先,寄存器是什么?

寄存器,是集成电路中非常重要的一种存储单元,通常由触发器组成。在集成电路设计中,寄存器可分为电路内部使用的寄存器和充当内外部接口的寄存器这两类。内部寄存器不能被外部电路或软件访问,只是为内部电路的实现存储功能或满足电路的时序要求。而接口寄存器可以同时被内部电路和外部电路或软件访问,CPU中的寄存器就是其中一种,作为软硬件的接口,为广泛的通用编程用户所熟知。

今天在昨天建好的工程基础上,简单介绍下怎么操作寄存器点亮LED灯。

新建两个文件文件,分别命名为led.h和led.c并添加到工程项目中。

STM32

STM32

STM32

进行操作的板子中LED1和LED2分别对应PF9和PF10,想控制LED,就要先初始化对应的端口。要初始化就要配置相应的寄存器。配置寄存器需要一个STM32F4xx的参考手册,我比较菜,只能看中文文档,看得懂英文的可以直接用英文版,毕竟英文版的是第一手资料。

STM32

STM32

以第一个GPIOx_MODER端口模式寄存器为例,要操作的端口分别为9、10,对应18、20位。从电路图可以知道只要控制输出的高低电平就可以实现LED灯的亮灭。所以这里选择通用输出模式10。

STM32

在输出类型中中,输出使能,推挽模式时双 MOS 管以方式工作,输出数据寄存器GPIOx_ODR 可控制 I/O输出高低电平。开漏模式时,只有 N-MOS 管工作,输出数据寄存器可控制 I/O输出高阻态或低电平。所以输出类型应选推挽输出。

STM32

STM32

端口的输出速度是端口支持高低电平切换的最高频率,控制LED灯可以随便设置。

STM32

端口用于输入时,端口的上/下拉模式可以控制端口的默认状态。但现在端口用于输出,端口受 ODR寄存器影响,ODR寄存器对应端口位初始初始化后默认值为 0,端口输出低电平,所以这时我们配置无上/下拉模式。

STM32

STM32

在输出模式时,操作BSRR和ODR寄存器即可控制端口的电平。这里用ODR寄存器控制。输入为0时,LED灯亮;输入为1时,LED灯灭。

STM32

STM32

这时,GPIO端口的寄存器已经配置完成,但是还是点不亮灯。这是为什么捏?

STM32为了降低功耗,每个外设都对应一个时钟,这些时钟的初始状态都是关闭的,如果外设想要工作,必须打开相应的时钟。所有外设的时钟由一个专门的外设来管理,叫 RCC。所以最后还要通过RCC_AHB1ENR开启时钟。

STM32

STM32

主程序

STM32

LED源文件

STM32

LED头文件

STM32

编译文件,将程序烧入开发板,LED灯亮,实验成功。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分