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

相关推荐
硅基手札7 分钟前
SPI技术系列 12 · SPI 设备驱动实战
linux·驱动开发·单片机·嵌入式硬件·mcu·性能优化·系统架构
深圳市青牛科技实业有限公司8 分钟前
GC4928|8‑28V 带霍尔三相 BLDC 栅极,OA 设备专用驱动芯片
单片机·嵌入式硬件
inrichtt14 分钟前
第十一课时:串口中断接收与回调函数实战解析
c语言·数据结构·stm32·单片机·嵌入式硬件
潜创微科技25 分钟前
CH592:集成 BLE 的青稞 RISC-V 无线 MCU
c语言·单片机·risc-v·无线投屏·低延迟·沁恒
国科安芯35 分钟前
星载微控制器MCU选型与系统设计的证据化方法
大数据·数据库·单片机·嵌入式硬件·低轨卫星·商业航天·抗辐射
番茄灭世神1 小时前
PN学堂GD32教程第16篇——Fatfs
单片机·嵌入式硬件
晚枫歌F1 小时前
dpdk实现tcpserver
单片机·嵌入式硬件
小莞尔2 小时前
【51单片机】【protues仿真】基于51单片机六路抢答器系统
c语言·单片机·嵌入式硬件·物联网·51单片机
2501_922639582 小时前
率能半导体 SS6622E直流双向马达驱动芯片:20V/2.4A,覆盖电子锁、玩具、无线充电、机器人四大应用场景
stm32·单片机·嵌入式硬件·硬件工程
意法半导体STM323 小时前
【官方原创】LAT6041 STM32MP1x USB OTG FIFO设置
stm32·单片机·嵌入式硬件·mcu·fifo·stm32mp1x