3. RH850时钟系统配置与频率验证

RH850时钟系统配置与频率验证 学习卡片

任务说明

本案例基于瑞萨RH850/F1L系列MCU(以R7F7015873为例),实现一个最小按键输入检测系统:将P7组GPIO的P70配置为输入模式并连接外部按键,将P8组GPIO的P80配置为输出模式并连接LED。当按键按下时(输入低电平),LED点亮;按键释放时,LED熄灭。通过该案例掌握RH850 GPIO输入模式配置、端口电平读取及基于轮询方式的输入处理逻辑。

硬件连接

  • 按键一端接P70引脚,另一端接GND(按下为低电平)
  • LED正极经限流电阻接P80引脚,负极接GND(输出高电平点亮)
  • P70内部需启用上拉电阻,确保按键释放时引脚为确定高电平

软件实现

RH850的GPIO配置涉及端口模式寄存器(PM)、端口方向寄存器(P)和端口数据寄存器(PD)。P70需配置为输入模式(PM7.0=1),并使能内部上拉(PU7.0=1);P80需配置为输出模式(PM8.0=0)。读取按键状态通过端口数据寄存器PD7.0实现,控制LED通过PD8.0实现。


#include "r_cg_macrodriver.h"
#include "r_cg_port.h"
#include "r_cg_timer.h"
#include "r_cg_int.h"
#include "r_cg_cgc.h"

/* 按键与LED引脚定义 */
#define KEY_PIN     P70
#define LED_PIN     P80
#define KEY_PRESSED 0u    /* 按键按下为低电平 */

void R_MAIN_Init(void)
{
    /* 配置P70为输入模式,启用内部上拉 */
    PM7 &= 0xFE;          /* PM7.0 = 0,设为输入模式 */
    PU7 |= 0x01;          /* PU7.0 = 1,使能内部上拉 */
    
    /* 配置P80为输出模式,初始输出低电平 */
    PM8 &= 0xFE;          /* PM8.0 = 0,设为输出模式 */
    P8  &= 0xFE;          /* P8.0 = 0,初始LED熄灭 */
}

void main(void)
{
    R_MAIN_Init();
    
    while(1)
    {
        /* 读取按键状态并控制LED */
        if((P7 & 0x01) == KEY_PRESSED)
        {
            P8 |= 0x01;   /* 按键按下,点亮LED */
        }
        else
        {
            P8 &= 0xFE;   /* 按键释放,熄灭LED */
        }
    }
}

代码说明

初始化函数中,通过操作PM7寄存器将P70设为输入模式,PU7寄存器使能内部上拉电阻。P80通过PM8寄存器设为输出模式。主循环中持续读取P7寄存器bit0的状态,当检测到低电平时将P8寄存器bit0置1点亮LED,否则清零熄灭LED。该轮询方式无需中断,逻辑简单直观,适合理解GPIO输入处理的基本流程。

验证方法

将代码编译后烧录至RH850开发板,按以下步骤验证:

  1. 上电后观察LED应为熄灭状态(P80输出低电平)
  2. 按下按键(P70接地),LED应立即点亮
  3. 释放按键,LED应立即熄灭
  4. 重复按下/释放操作,LED状态应始终与按键状态一致

判定标准:按键按下时LED点亮、释放时LED熄灭,且响应无延迟、无抖动误触发,即表示GPIO输入检测功能正常。

注意事项:若按键未按下时LED闪烁或状态不稳定,需检查P70上拉电阻是否已正确使能;若按下无反应,请确认按键连接引脚是否为P70且接地正确。
RH850 R7F7015873 P70 P80 KEY GND 上拉 VDD R LED GND GPIO输入检测电路连接图 按键按下→P70=低电平→P80输出高→LED点亮