马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
点击上方"蓝字"关注我们
01、rtc.h
- #ifndef __RTC_H#define __RTC_H#include "stm32f4xx.h"#include "delay.h"#include "led.h"void Rtc_My_Init(void);void RTC_Alarm_MyA(void);#endif
复制代码
02、rtc.c
- #include "rtc.h"#define BKP 0x2022void Rtc_My_Init(void){
- RTC_InitTypeDef RTC_InitStruct; RTC_TimeTypeDef RTC_TimeStruct; RTC_DateTypeDef RTC_DateStruct; //1、使能PWR时钟: RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); //2、使能后备寄存器访问: 后备寄存器是掉电可保存数据的寄存器 PWR_BackupAccessCmd(ENABLE); if(RTC_ReadBackupRegister(RTC_BKP_DR0) != BKP) {
- //3、配置RTC时钟源,使能RTC时钟: RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); //选择LSE时钟源 RCC_RTCCLKCmd(ENABLE); //如果使用LSE,要打开LSE: RCC_LSEConfig(RCC_LSE_ON); //延时1小段时间,等待系统稳定 delay_ms(50); RTC_InitStruct.RTC_HourFormat = RTC_HourFormat_24; //24小时制度 RTC_InitStruct.RTC_AsynchPrediv = 0x7F; //异步通道分频器 128分频 RTC_InitStruct.RTC_SynchPrediv = 0xFF; //同步通道分频器 256分频 //4、 初始化RTC(同步/异步分频系数和时钟格式): RTC_Init(&RTC_InitStruct); RTC_TimeStruct.RTC_H12 = RTC_H12_PM; //下午 对于24小时制度,此参数可不写 RTC_TimeStruct.RTC_Hours = 13; //时 RTC_TimeStruct.RTC_Minutes = 1; //分 RTC_TimeStruct.RTC_Seconds = 1; //秒 RTC_SetTime(RTC_Format_BIN, &RTC_TimeStruct); RTC_DateStruct.RTC_Year = 21; //年 RTC_DateStruct.RTC_Month = 12; //月 RTC_DateStruct.RTC_Date = 18; //日 RTC_DateStruct.RTC_WeekDay = RTC_Weekday_Saturday; //星期六 RTC_SetDate(RTC_Format_BIN, &RTC_DateStruct); RTC_WriteBackupRegister(RTC_BKP_DR0, BKP); }}void RTC_Alarm_MyA(void){
- RTC_TimeTypeDef RTC_AlarmTime; RTC_AlarmTypeDef RTC_AlarmStruct; EXTI_InitTypeDef EXTI_InitStruct; NVIC_InitTypeDef NVIC_InitStruct; //关闭闹钟: RTC_AlarmCmd(RTC_Alarm_A,DISABLE); RTC_AlarmTime.RTC_H12 = RTC_H12_PM; //下午 对于24小时制度,此参数可不写 RTC_AlarmTime.RTC_Hours = 13; //时 RTC_AlarmTime.RTC_Minutes = 1; //分 RTC_AlarmTime.RTC_Seconds = 45; //秒 RTC_AlarmStruct.RTC_AlarmTime = RTC_AlarmTime; // 时间设置 RTC_AlarmStruct.RTC_AlarmMask = RTC_AlarmMask_None; // 无掩码位 RTC_AlarmStruct.RTC_AlarmDateWeekDaySel = RTC_AlarmDateWeekDaySel_Date; //按日期来响应闹钟 RTC_AlarmStruct.RTC_AlarmDateWeekDay = 18; //18号 //配置闹钟参数: RTC_SetAlarm(RTC_Format_BIN, RTC_Alarm_A, &RTC_AlarmStruct); //开启闹钟: RTC_AlarmCmd(RTC_Alarm_A, ENABLE); //开启配置闹钟中断: RTC_ITConfig(RTC_IT_ALRA, ENABLE); EXTI_InitStruct.EXTI_Line = EXTI_Line17; //中断线17 EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt; //中断模式 EXTI_InitStruct.EXTI_Trigger= EXTI_Trigger_Rising; //上升沿触发 EXTI_InitStruct.EXTI_LineCmd= ENABLE; //中断使能 //初始化线上中断,设置触发条件等。 EXTI_Init(&EXTI_InitStruct);
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |