STM32使用内部时钟配置RTC,设置并读取时间、闹钟和周期唤醒

说明:由于开发板上没有32.768kHz的时钟,所以选择内部32kHz的时钟。

基本配置

1.首先使能RTC

2.配置时钟(内部时钟32kHz)

3. General选项组里配置小时模式,有24小时制和12小时制可选,后面的127和255组合成分频系数,127实际对应128,255实际对应256,所以128×256=32768,正好实现输入32.768KHz时钟分频到1Hz。

由于我们选择内部时钟,所以设置为79和399,80x400=32000,实现输入32KHz时钟分频到1Hz。

4. 初始时间及日期配置:

DataFormat选项分别为BIN(时间为10进制)BCD(时间为16进制)

Hours为初始时间的小时

Minutes为初始时间的分钟

Seconds为初始时间的秒数

设置闹钟

1.闹钟使用,闹钟A设置为xx:xx:30触发,即每分钟的30秒触发。

2.使能闹钟中断

3.调用闹钟回调函数,每分钟30秒的时候触发一次

 void HAL_RTC_AlarmAEventCallback(RTC_HandleTypeDef *hrtc)

{

       HAL_UART_Transmit(&huart6,(uint8_t *)"Alarm\r\n",7, 100);

}

周期唤醒

1.配置,Wake Up Clock:周期唤醒的时钟源;Wake Up Counter:唤醒计数器的重载值,如果设置为0,则每个时钟周期中断一次。如选择周期唤醒时钟源为1Hz信号时,若设置次值为0,则每一秒发生一次唤醒中断。

2.开启周期唤醒中断

3.重写回调函数,并获取时间日期(需同时获取,否则时间会锁死)

void HAL_RTCEx_WakeUpTimerEventCallback(RTC_HandleTypeDef *hrtc)

{

       RTC_TimeTypeDef        sTime;
       RTC_DateTypeDef        sDate;
       HAL_RTC_GetTime(hrtc, &sTime, RTC_FORMAT_BIN);        
    sprintf(Uart6RxBuffer,"Time:%02d:%02d:%02d\t",sTime.Hours,sTime.Minutes,sTime.Seconds);
       HAL_UART_Transmit(&huart6,(uint8_t *)Uart6RxBuffer,strlen(Uart6RxBuffer), 100);
       HAL_RTC_GetDate(hrtc, &sDate, RTC_FORMAT_BIN);
     sprintf(Uart6RxBuffer, "Date:20%02d-%02d-%02d\r\n",sDate.Year,sDate.Month,sDate.Date);
       HAL_UART_Transmit(&huart6,(uint8_t *)Uart6RxBuffer,strlen(Uart6RxBuffer), 100);

}

  • 14
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基于STM32RTC内部时钟模块,您可以实现以下功能: 1. 实时时钟RTC)功能:RTC模块提供了一个可靠的时间计数器,可以用于记录实时日期和时间。您可以通过配置和访问RTC寄存器来读取设置当前的日期和时间。此外,RTC模块还提供了闹钟功能,可以在指定的日期和时间触发中断或事件。 2. 电池备份:RTC模块通常与电池供电相结合,以提供持久的日期和时间记录,即使主电源中断也能保持数据的稳定。当主电源恢复时,RTC模块可以自动与主时钟同步。 3. 时钟校准:RTC模块可以通过外部参考源(如低速外部晶体振荡器)进行校准,以提高时钟精度。 4. 低功耗模式:RTC模块具有低功耗特性,可以在系统处于低功耗状态时继续正常运行,以保持时间记录的准确性。 5. 中断和事件:RTC模块可以生成中断或事件,以通知主处理器某些特定的时间点或事件已发生。 要使用STM32RTC内部时钟模块,您需要进行以下步骤: 1. 确定RTC时钟源:您可以选择使用LSE(低速外部晶体振荡器)或LSI(内部低速时钟)作为RTC时钟源。LSE通常提供更高的精度。 2. 配置RTC时钟:根据您选择的时钟源,您需要配置RTC时钟。这涉及到设置相应的寄存器和初始化RTC模块。 3. 设置日期和时间使用RTC模块提供的寄存器,您可以设置当前的日期和时间。您还可以设置闹钟以触发中断或事件。 4. 备份电池:如果您希望在主电源中断时保持日期和时间记录,您需要连接一个备份电池到RTC模块上。 请注意,具体的操作步骤和代码实现可能因不同的STM32系列和开发环境而有所差异。我建议您参考相关的STM32芯片手册和开发环境文档,以获取更详细和准确的信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值