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

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

3天内不再提示

使用寄存器点亮LED灯

瑞萨MCU小百科 ? 来源:野火电子 ? 2025-05-28 17:37 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

第7章

第一个实验:用寄存器点亮LED

本章内容主要参考以下的芯片硬件手册:

《RA6M5 Group User’s Manual:Hardware》

《RA4M2 Group User’s Manual:Hardware》

《RA2L1 Group User’s Manual:Hardware》

学习本章时,配合以上芯片手册中的“19. I/O Ports”章节一起阅读,效果会更佳,特别是涉及到寄存器说明的部分。本章内容涉及到较多寄存器方面的深入内容,对于初学者而言这些内容丰富也较难理解,但非常有必要细读研究、夯实基础。

一般而言,点灯例程就像是刚学习C语言那时的“Hello World”程序那样,是简单入门一块单片机开发板的经典例程。C语言的“Hello World”程序使用printf函数来打印“Hello World!”字符串,而我们学习这块开发板的第一个例程的内容却不是打印“Hello World!”字符串,而是首先要学会控制芯片的引脚。我们在后面的第19章“SCI UART——串口通讯”里才会开始使用到printf函数来打印字符串,所以接下来就先来学习如何控制芯片的引脚吧!

7.1IOPORT简介

芯片的引脚可以被粗略地分为IO引脚和非IO引脚。非IO引脚就是电源引脚、晶振引脚等的那些引脚,他们不具备GPIO(通用输入输出)功能。而IO引脚是那些具备GPIO功能的引脚,他们可以配置为各种模式、实现各种通用功能。

IO引脚最基本的输出功能是输出高、低电平,实现开关控制(比如开关LED灯、继电器或三极管等);最基本的输入功能是检测外部输入电平(比如通过引脚电平的高低区分按键是否被按下)。

IO引脚还可以用来连接外部设备,与外部设备进行通讯,发送控制指令,采集传感器数据等等。

IOPORT即I/O Port,在代码里面为了方便而写成“IOPORT”,表示输入输出端口。IOPORT是RA MCU的一个外设模块,它用来控制芯片的引脚,对每一个引脚进行详细的配置。具体地说,IOPORT 可以对引脚进行以下几个方面的配置:

配置引脚为普通IO功能,即输入或输出高电平或者低电平。

控制引脚的输入上拉电阻

控制引脚的驱动能力。

控制引脚是否检测上升沿/下降沿/双边沿。

控制引脚是否作为中断输入引脚。

配置引脚为模拟输入功能或者将引脚在内部连接到其他外设模块。

瑞萨RA系列芯片的IO端口从理论上被分成16个组(0~9,A,B,C,D,E,F),每组有16个引脚(0~15)。然而,实际情况并非是完整的“16个组+每组16个引脚”的配置,而是因实际的芯片型号而异。以野火启明6M5板子上的R7FA6M5BH3CFC芯片为例,它是LQFP 176-pin封装,一共有176个引脚,其中的大部分引脚都是可以被IOPORT模块控制的IO引脚。而这些IO引脚被分成了0~9,A,B共11组引脚(注:A,B是10,11的十六进制表示),每组一般有16个引脚(引脚号为0~15),实际上有些组不到16个引脚。对于引脚数比较少的封装(LQFP 144-pin和LQFP 100-pin封装)来说,芯片的可用IO引脚数也会相对减少。

7.2IOPORT的框图分析

RA6M5、RA4M2、RA2L1这三者的IOPORT模块框图结构是基本一致的。

以RA6M5为例,下图是RA6M5的外设IOPORT的功能结构框图,标有字母A处表示的是芯片实际引出 IO引脚。

87f3a530-39e7-11f0-afc8-92fbcf53809c.png

接下来我们对IOPORT外设的结构框图进行分析,将不难得出IOPORT有如下几种工作模式:

通用输入输出(GPIO)模式

输入模式(浮空/上拉)

输出模式(推挽/开漏)

模拟输入功能模式

复用功能模式

7.2.1

IO端口方向

见图中标注①处。

PDR(Port Direction Register)是端口方向寄存器,它控制端口的GPIO方向。当IO引脚需要控制输出高电平或者低电平时,可设置引脚的GPIO方向为GPIO输出;而当需要读取IO引脚的电平时,可设置引脚的GPIO方向为GPIO输入。

7.2.2

IO输入上拉控制

见图中标注②处。

PCR(Pull-up Control Register)是上拉控制寄存器,它控制IO引脚的GPIO输入是否使能上拉。当设置为允许上拉时,实际上会使得图中字母B处的弱上拉电阻连接到VCC电源正极,从而使得引脚处于弱上拉输入模式。需要注意的是,当引脚的GPIO方向被配置为“输入”时,才可以设置使用弱上拉电阻。从上图还可以看出,RA6M5的IO端口是没有下拉电阻的。

7.2.3

IO驱动能力和开漏输出控制

见图中标注③处。

DSCR(Port Drive Capability Register)是端口驱动能力寄存器,它控制IO引脚的驱动能力。驱动能

力指的是IO驱动的电流强度和IO的最大翻转速率。

NCODR(N-Channel Open-Drain Control Register)是开漏输出控制寄存器,它控制IO引脚是否使能开漏模式。当引脚的GPIO方向被配置为“输出”时,可以配置IO引脚输出的模式是推挽输出还是使能开漏输出。

7.2.4

IO端口输出数据

见图中标注④处。

这部分看似比较复杂,但是实际上EOSR、POSR、PORR、EORR的箭头最终都指向PODR,这意味着操作EOSR、POSR、PORR、EORR这些寄存器,实际上将最终操作的是PODR寄存器。

图中PODR(Port Output Data Regist)是端口输出数据寄存器,它控制GPIO引脚输出的电平。当引脚的GPIO方向被配置为“输出”时,可以配置引脚输出高电平或者低电平。

图中EOSR(Event Output Set Register)是事件输出置位寄存器(该寄存器我们暂且忽略它)。

图中POSR(Pmn Output Set Register)是端口输出数据寄存器,它控制GPIO引脚输出为高电平,但却不能控制输出低电平。

图中PORR(Pmn Output Reset Register)是端口输出数据寄存器,它控制GPIO引脚输出为低电平,但却不能控制输出高电平。

图中EORR(Event Output Reset Register)是事件输出复位寄存器(该寄存器我们暂且忽略它)。

7.2.5

IO端口输入数据

见图中标注⑤处。

PIDR(Port Input Data Register)是端口输入数据寄存器,可以通过它读取GPIO引脚的电平状态。

当引脚的GPIO方向被配置为“输入”时,程序可以读出输入引脚的电平是高电平还是低电平。

7.2.6

模拟输入模式

见图中标注⑥处。

ASELAnalog Input Enable)是模拟输入选择控制位,可以通过它来将引脚配置为模拟输入模式。

当使用ADC功能时,需将引脚配置为模拟输入模式。

7.2.7

端口模式控制和外设复用选择

见图中标注⑦处。

PMR(Port Mode Control)是端口模式控制位,可以通过它来将引脚配置为GPIO输入/输出模式,

或者配置作为复用外设功能引脚。

PSEL(Peripheral Select)是外设复用选择,可以通过它来选择将引脚连接到某一个外设功能上。

7.2.8

IO边沿检测与中断

见图中标注⑧处。

EOFR(Event on Falling/Event on Rising)是事件触发选择,可以通过它来让引脚检测边沿信号,如果检测到指定信号将触发一个事件。

ISEL(IRQ Input Enable)是IRQ输入使能控制位,可以配置是否产生中断。

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

    关注

    22

    文章

    1596

    浏览量

    109867
  • 寄存器
    +关注

    关注

    31

    文章

    5439

    浏览量

    124819
  • 瑞萨
    +关注

    关注

    36

    文章

    22389

    浏览量

    88119
  • C语言
    +关注

    关注

    180

    文章

    7633

    浏览量

    142013
  • 引脚
    +关注

    关注

    16

    文章

    1769

    浏览量

    53087

原文标题:第一个实验:用寄存器点亮 LED 灯——瑞萨RA系列FSP库开发实战指南(18)

文章出处:【微信号:瑞萨MCU小百科,微信公众号:瑞萨MCU小百科】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    瑞萨RA系列FSP库开发实战指南(19)使用寄存器点亮LED

    野火启明6M5开发板的LED电路图如图所示。图中RA6M5芯片的P400、P403、P404引脚分别通过一个2.2 KΩ的限流电阻连接到LED1、LED2、LED3这三个用户
    的头像 发表于 06-11 15:06 ?1204次阅读
    瑞萨RA系列FSP库开发实战指南(19)使用<b class='flag-5'>寄存器</b><b class='flag-5'>点亮</b><b class='flag-5'>LED</b><b class='flag-5'>灯</b>

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

    寄存器,是集成电路中非常重要的一种存储单元,通常由触发组成。在集成电路设计中,寄存器可分为电路内部使用的寄存器和充当内外部接口的寄存器这两
    的头像 发表于 07-21 16:59 ?4624次阅读
    <b class='flag-5'>寄存器</b>是什么?怎么操作<b class='flag-5'>寄存器</b><b class='flag-5'>点亮</b><b class='flag-5'>LED</b><b class='flag-5'>灯</b>?

    嵌入式系统:[7.1]--实验一使用寄存器点亮LED(原理)(2)#硬声创作季

    嵌入式
    学习电子
    发布于 :2022年12月29日 18:46:31

    嵌入式系统:[7.2]--实验一使用寄存器点亮LED(操作)(1)#硬声创作季

    嵌入式
    学习电子
    发布于 :2022年12月29日 18:46:56

    寄存器点亮led

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

    如何用STM32F429寄存器点亮LED

    大家好,不知道大家看过我上个写的文章没有,如果没有的话请大家去看看哦,都是整理的精化。好了让我们继续,今天的主题是什么呢。没错!就是这个万恶的小LED,我们已经接受完了理论知识,现在准备把它点亮
    发表于 01-05 07:32

    如何使用寄存器点亮LED

    一、使用寄存器点亮LED1.建立相关文件新建总文件夹用来存放本次工程的所有程序,然后再建CORE、HARDWARE、OBJ、FWLIB、SYSTEM、USER这六个文件夹。1.1.建
    发表于 01-17 06:30

    怎样使用寄存器点亮LED

    使用寄存器点亮LEDGPIO简介新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中
    发表于 01-24 07:48

    寄存器点亮LED

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

    使用寄存器点亮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><b class='flag-5'>灯</b>

    ONE STM32单片机使用寄存器点亮LED

    使用寄存器点亮LEDGPIO简介新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中
    发表于 11-29 14:36 ?0次下载
    ONE STM32单片机使用<b class='flag-5'>寄存器</b><b class='flag-5'>点亮</b><b class='flag-5'>LED</b><b class='flag-5'>灯</b>

    3、初识stm32——GPIO

    寄存器点亮LED1、新建工程文件,选择STM32F1032、
    发表于 01-04 19:00 ?0次下载
    3、初识stm32——GPIO

    GPIO输出——使用FSP库点亮LED

    关于 IOPORT 的详细分析,我们不再赘述,请读者参考前面“第一个实验:用寄存器点亮LED”章节。
    的头像 发表于 02-15 15:43 ?1547次阅读
    GPIO输出——使用FSP库<b class='flag-5'>点亮</b><b class='flag-5'>LED</b><b class='flag-5'>灯</b>

    使用STM32寄存器点亮LED

    事先声明哦,我也是最近才开始学32的,不过我会尽可能详细的讲解这些小知识点.
    的头像 发表于 05-24 14:26 ?2151次阅读
    使用STM32<b class='flag-5'>寄存器</b><b class='flag-5'>点亮</b><b class='flag-5'>LED</b><b class='flag-5'>灯</b>