0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

冬至子 来源:纷纭杂谈 作者:CY_CHEN 2023-07-21 16:59 次阅读

首先,寄存器是什么?

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

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

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

图片

图片

图片

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

图片

图片

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

图片

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

图片

图片

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

图片

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

图片

图片

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

图片

图片

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

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

图片

图片

主程序

图片

LED源文件

图片

LED头文件

图片

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

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

    关注

    22

    文章

    1554

    浏览量

    107030
  • 寄存器
    +关注

    关注

    30

    文章

    5028

    浏览量

    117719
  • MOS管
    +关注

    关注

    107

    文章

    2215

    浏览量

    64367
  • STM32
    +关注

    关注

    2239

    文章

    10671

    浏览量

    348738
  • 触发器
    +关注

    关注

    14

    文章

    1677

    浏览量

    60402
收藏 人收藏

    评论

    相关推荐

    uboot下怎么操作寄存器点亮一个

    我现在在uboot模式下,我的gpio3_14连了一个led,想点亮它,只有操作寄存器点亮
    发表于 06-21 15:07

    寄存器点亮led

    本篇文章介绍了STM32的基本知识,以及寄存器编程,映射等有关知识,最后实例为用寄存器点亮led
    发表于 08-24 06:57

    如何操作寄存器

    学习单片机实际上就是学习如何操作寄存器。51单片机使用sfr来定义具有特殊功能的寄存器。如:sfr P1 = 0x90;如果你想使用P1口的第1位来点亮
    发表于 11-23 09:01

    如何通过控制寄存器点亮LED

    如何通过控制寄存器点亮LED
    发表于 11-29 06:39

    如何利用寄存器点亮LED

    GPIO引脚都有哪些功能呢?GPIO可以配置成哪几种模式?如何利用寄存器点亮LED呢?
    发表于 11-29 07:56

    寄存器点亮LED

    寄存器点亮LED1、新建工程文件,选择STM32F1032、
    发表于 02-24 07:33

    STM32寄存器点亮LED简介

    STM32点亮LED 寄存器方式IO简介1、每个IO可以自由编程,但是IO口寄存器必须按照32位字被访问。2、每个IO端口都有7个寄存器来控
    发表于 02-28 06:51

    寄存器,寄存器是什么意思

    寄存器,寄存器是什么意思 寄存器定义  寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用
    发表于 03-08 14:26 2.1w次阅读

    使用寄存器点亮LED

    stm32是我们会寄存器点亮LED
    发表于 12-01 15:30 0次下载

    如何使用寄存器点亮LED

    本文档的主要内容详细介绍的是如何使用寄存器点亮LED灯。
    发表于 04-15 17:00 10次下载
    如何使用<b class='flag-5'>寄存器</b><b class='flag-5'>点亮</b><b class='flag-5'>LED</b>灯

    STM8 寄存器点亮LED

    STM8 寄存器点亮LED库函数:方便,但效率低,调用文件多寄存器:高效,芯片资源最大化运用,但繁琐//使用寄存器方式控制最小系统板上 PB
    发表于 12-05 12:36 3次下载
    STM8 <b class='flag-5'>寄存器</b><b class='flag-5'>点亮</b><b class='flag-5'>LED</b>

    C语言:寄存器操作

    C语言:寄存器操作
    发表于 01-13 12:56 6次下载
    C语言:<b class='flag-5'>寄存器</b><b class='flag-5'>操作</b>

    STM32F03寄存器方式点亮LED流水灯

    STM32F03寄存器方式点亮LED流水灯文章目录STM32F03寄存器方式点亮LED流水灯一、
    发表于 01-13 14:47 9次下载
    STM32F03<b class='flag-5'>寄存器</b>方式<b class='flag-5'>点亮</b><b class='flag-5'>LED</b>流水灯

    STM32的寄存器操作

    STM32的寄存器操作在使用STM32单片机编程时一般都用ST给的库函数编程,库函数编程的底层就是对单片机寄存器操作,库函数就是一系列寄存器
    发表于 01-13 15:43 18次下载
    STM32的<b class='flag-5'>寄存器</b><b class='flag-5'>操作</b>

    配置STM32寄存器控制GPIO点亮LED

    STM32点亮LED 寄存器方式IO简介1、每个IO可以自由编程,但是IO口寄存器必须按照32位字被访问。2、每个IO端口都有7个寄存器来控
    发表于 01-13 16:15 3次下载
    配置STM32<b class='flag-5'>寄存器</b>控制GPIO<b class='flag-5'>点亮</b><b class='flag-5'>LED</b>