e2studio R7FA6M5 卡死 rtc 需要如何配置时钟

如题在新建工程的时候,如果自己设计的板子rtc 没有外部晶振,软件debug运行在这里就会卡死

cpp 复制代码
R_RTC->RCR2_b.RESET = 1;

FSP_HARDWARE_REGISTER_WAIT(R_RTC->RCR2_b.RESET, 0);

我隐约感觉到时rtc时钟问题,所以在e2studio 里打开 configuration.xml stacks 添加 timers 添加rtc,就可以跳过这代码。正常运行新建代码。

当然我也咨询ai 如下是ai回复

问题根因先说结论:你这段代码卡死,是因为 RTC 没有时钟源在跑

R_RTC->RCR2_b.RESET = 1 是一条"软件复位"指令,硬件复位完成后会自动清 0。但 RTC 复位动作必须在 RTC 时钟源工作 的前提下才能完成。RA6M5 的 RTC 时钟源默认选择是副时钟(外部 32.768kHz 晶振) ,如果你没有先使能并等待副时钟稳定(或者板子上根本没焊晶振),RESET 位就永远不会清 0,FSP_HARDWARE_REGISTER_WAIT 是死循环(无超时),于是卡死。

推荐做法:用 FSP 配置,不要手写寄存器

在 e2studio 里打开 configuration.xml,做两处配置:

1. Clocks 页 ------ 开启副时钟振荡器

  • Sub-Clock Oscillator (SOSC) → Enabled
  • Sub-Clock Oscillator Frequency → 32768
  • 驱动能力 Drive Capability 按你的晶振负载选,一般选 Standard

这样生成代码后,system_init 里的 R_CGC_SystemClockSet() 会帮你开副时钟并等待稳定,进 main 时 SOSC 已经跑起来了。

2. Stacks 页 ------ 添加 r_rtc 模块

  • Add → Realtime Clock (r_rtc)
  • 属性里 Clock Source → Sub Clock(有晶振时)
  • Operating Mode → Calendar
  • Hour Format → 按需 24 Hour / 12 Hour
  • 按需开 Alarm / Periodic 中断

Generate Project Content 后,代码里直接:

c

复制代码
R_RTC_Open(&g_rtc0_ctrl, &g_rtc0_cfg);   // 内部就做了:开副时钟→RESET=1→等清0→配置寄存器
R_RTC_CalendarTimeSet(&g_rtc0_ctrl, &current_time);
R_RTC_Start(&g_rtc0_ctrl);

不要再手写 RCR2。FSP 驱动里已经正确实现了完整初始化序列。

相关推荐
恒锐丰小瑞1 小时前
率能SS6812T 40V/1A/双通道H桥驱动芯片,PWM电流控制与混合衰减模式(eTSSOP28),用于POS打印机/安防相机/机器人
单片机·嵌入式硬件·数码相机·机器人
嵌入式阿蔡3 小时前
传感器_02:MPU6050 六轴 IMU 姿态入门——从一串看不懂的数,到一个不漂的角度
网络·stm32·单片机·嵌入式硬件·嵌入式实时数据库
恒锐丰小瑞3 小时前
率能SS6811H 38V/1.6A/双通道H桥驱动芯片,PWM控制接口与低功耗睡眠模式,用于舞台灯光/安防相机/机器人
单片机·嵌入式硬件·数码相机·机器人
怀民民民3 小时前
开篇:基于 Cortex-M7、OpenMV 与双频 GNSS 的智能派件 AGV 设计与实现
单片机·嵌入式硬件·gnss·openmv·智能车
爱吃米粥4 小时前
过流、过压、防反接、防浪涌于一体的输入电路
单片机·嵌入式硬件
橘色的喵4 小时前
USB MCU的固件烧写工具:从 vendor 命令到逐字节校验
单片机·嵌入式硬件·嵌入式
意法半导体STM325 小时前
【官方原创】STM32CubeMX 6.18.0新版本发布
stm32·单片机·嵌入式硬件·stm32cubemx·cube开发工具
恒锐丰小瑞5 小时前
率能SS8833T 15V/1A/双通道H桥驱动芯片,低静态电流与过温报警输出(FAULT),用于POS打印机/机器人/电池玩具
stm32·单片机·机器人
振南的单片机世界5 小时前
IDLE中断:串口收完一帧数据,硬件自动“吹哨”
arm开发·stm32·单片机·嵌入式硬件