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 驱动里已经正确实现了完整初始化序列。

相关推荐
HRTOS1 小时前
HRTOS 任务优先级与调度模式说明
单片机·嵌入式硬件·系统架构·51单片机
嵌入式分享3 小时前
嵌入式分享#19:《嵌入式外设调试思路》--I2C设备篇
单片机·嵌入式硬件
WD137298015573 小时前
WD5030K输入工作电压 7.5‑30V,适合12A 及以内量产项目
stm32·单片机·嵌入式硬件·51单片机
千秋岁rr3 小时前
12.IIC
单片机·嵌入式硬件
光子物联单片机4 小时前
STM32传感器模块编程实践(二十二)DIY智能WIFI视频控制小车
c语言·stm32·单片机·嵌入式硬件·音视频
HRTOS4 小时前
HRTOS 高速任务与中断嵌套的 8051 寄存器组资源说明
单片机·嵌入式硬件·系统架构·51单片机
新晨单片机设计5 小时前
S010C-基于STM32单片机水温控制系统(OLED显示)【Proteus仿真+Keil程序+原理图】
stm32·单片机·proteus·水温控制系统
lhbweilai5 小时前
从底层了解STM32八大功能(下)
stm32·单片机
新晨单片机设计6 小时前
S009C-基于STM32单片机语音出租车计价器【Proteus仿真+Keil程序+原理图】
stm32·单片机·proteus·出租车计价器
zhangrelay6 小时前
Arduino-MEGA单片机智能大模型解答案例对比-正反
单片机·嵌入式硬件