RTC代码

#include "rtc.h"

/*
Function name:RTC_Cal_Config
Description:RTC基本日历初始化
param:None
retval:None
Remarks:
选择LSI时钟(32KHz)
*/
void RTC_Cal_Config(void)
{
    RTC_InitTypeDef rtc_InitTypeDef;
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);//使能电源接口时钟
    PWR_BackupAccessCmd(ENABLE);//使能备份域访问
    RCC_LSICmd(ENABLE);
    RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);//选择时钟源
    RCC_RTCCLKCmd(ENABLE);//使能RTC时钟
    RTC_WriteProtectionCmd(DISABLE);//取消写保护
    
    RTC_EnterInitMode();//进入初始化模式
    
    rtc_InitTypeDef.RTC_HourFormat=RTC_HourFormat_24;//时间格式
    rtc_InitTypeDef.RTC_AsynchPrediv=127;//异步分频
    rtc_InitTypeDef.RTC_SynchPrediv=249;//同步分频
    RTC_Init(&rtc_InitTypeDef);
    
    RTC_Set_Time(RTC_H12_PM,15,05,15);
    RTC_Set_Data(27,2,2,24);
    
    RTC_ExitIni

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
嵌入式闹钟RTC(Real-Time Clock)代码通常用于系统中实现时间的精确存储和定时功能,特别是无电池供电或休眠后仍能保持时间的场景。RTC模块是一个独立于系统时钟的硬件,常用于物联网设备、智能家居等场景中的时间同步。 以下是一个基本的RTC代码示例,使用的是基于ARM Cortex-M微控制器的STM32系列MCU,如STM32F103,配合LM8564或RTClib库: ```c #include "stm32f1xx_rtc.h" #include "stm32f1xx_hal.h" // RTC回调函数 void RTC_IRQHandler(void) { if (RTC_GetFlagStatus(RTC_FLAG_ALRA) == SET) { // 当闹钟响起时执行的操作 HAL_RTC_AlarmIRQCallback(&hrtc); RTC_ClearFlag(RTC_FLAG_ALRA); // 清除闹钟标志 } } void ConfigureRTC() { // 配置RTC时基 RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); PWR_BackupAccessCmd(ENABLE); // 初始化RTC并配置闹钟 RTC_InitTypeDef RTC_InitStruct; RTC_InitStruct.RTC_HoursPreten = RTC_HoursPreten_12; // 小时格式为12小时制 RTC_InitStruct.RTC_DateWeekDaySel = RTC_DateWeekDaySel_Monday; // 设置默认星期一为周日 HAL_RTC_Init(&hrtc, &RTC_InitStruct); // 设置闹钟 RTC_AlarmTypeDef alarm; alarm.AlarmTime.Hours = 7; // 早上7点 alarm.AlarmTime.Minutes = 0; alarm.AlarmTime.Secondes = 0; alarm.AlarmDateWeekDay = RTC_DateWeekDay_Sunday; // 周日响起闹钟 alarm.AlarmDate = RTC_DateNow(); // 当前日期 alarm.AlarmMask = RTC_ALARMMask_Second | RTC_ALARMMask_Minute | RTC_ALARMMask_Hour; HAL_RTC_SetAlarm(&hrtc, &alarm); // 注册闹钟中断处理函数 HAL_NVIC_EnableIRQ(RTC_IRQn); HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, alarm.AlarmTime, RTC_IT_AlarmA); // 设置闹钟唤醒时间 } int main(void) { // ... 其他初始化步骤 ... ConfigureRTC(); while (1) { // 等待闹钟触发 } }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值