STM32单片机RTC时钟的使用方法及步骤

stm32rtc使用步骤:
打开pwr时钟和backup区数据访问
若使用外部低速时钟(lse),打开lse并等待起振
选择和打开rtc时钟,等待时钟同步
配置时间格式,分频系数等
根据需要配置时钟,日期,闹钟,唤醒,输出,时间戳,备份寄存器等模块
根据需要配置和打开中断,其中
rtc alarm ——exti line 17
rtc tamper and timestamps——exti line 19
rtc wakeup——exti line 20
下面的代码配置日期,时间,当前时间设置为 15年05月31日,星期日(7),15:50:40,打开闹钟a和唤醒中断,每一秒钟来一次中断,15:50:45秒产生闹钟中断,用串口打印相应的信息。
代码:
void rtc_config(void)
{
rtc_timetypedef rtc_timestructure;
rtc_datetypedef rtc_datestructure;
rtc_inittypedef rtc_initstructure;
rtc_alarmtypedef rtc_alarmstructure;
rcc_apb1periphclockcmd(rcc_apb1periph_pwr,enable);
pwr_backupaccesscmd(enable);
rcc_backupresetcmd(enable);
rcc_backupresetcmd(disable);
rcc_lseconfig(rcc_lse_on);
while(rcc_getflagstatus(rcc_flag_lserdy) == reset);
rcc_rtcclkconfig(rcc_rtcclksource_lse);
rcc_rtcclkcmd(enable);
rtc_waitforsynchro();
rtc_initstructure.rtc_hourformat=rtc_hourformat_24;
rtc_initstructure.rtc_asynchprediv=0x7f;
rtc_initstructure.rtc_synchprediv=0xff;
rtc_init(&rtc_initstructure);
rtc_datestructure.rtc_date=31; // 15,05,31
rtc_datestructure.rtc_month=rtc_month_may;
rtc_datestructure.rtc_year=15;
rtc_datestructure.rtc_weekday=rtc_weekday_sunday;
rtc_setdate(rtc_format_bin,&rtc_datestructure);
rtc_timestructure.rtc_h12=rtc_h12_am; // 15:50:40
rtc_timestructure.rtc_hours=15;
rtc_timestructure.rtc_minutes=50;
rtc_timestructure.rtc_seconds=40;
rtc_settime(rtc_format_bin,&rtc_timestructure);
rtc_alarmstructure.rtc_alarmdateweekdaysel=rtc_alarmdateweekdaysel_weekday;
rtc_alarmstructure.rtc_alarmdateweekday=rtc_weekday_sunday;
rtc_alarmstructure.rtc_alarmmask=rtc_alarmmask_none;
rtc_alarmstructure.rtc_alarmtime=rtc_timestructure;// 15:50:40
rtc_alarmstructure.rtc_alarmtime.rtc_seconds=45;// 15:50:45
rtc_setalarm(rtc_format_bin,rtc_alarm_a,&rtc_alarmstructure);
rtc_alarmcmd(rtc_alarm_a,enable);
rtc_itconfig(rtc_it_alra,enable);
rtc_itconfig(rtc_it_wut,enable);
rtc_wakeupcmd(disable);
rtc_wakeupclockconfig(rtc_wakeupclock_ck_spre_16bits);
rtc_setwakeupcounter(0);
rtc_wakeupcmd(enable);
}
void rtc_nvicexti_config(void)
{
nvic_inittypedef nvic_initstructure;
exti_inittypedef exti_initstructure;
nvic_initstructure.nvic_irqchannel = rtc_alarm_irqn;
nvic_initstructure.nvic_irqchannelpreemptionpriority = 0;
nvic_initstructure.nvic_irqchannelsubpriority = 0;
nvic_initstructure.nvic_irqchannelcmd = enable;
nvic_init(&nvic_initstructure);
exti_clearitpendingbit(exti_line17);
exti_initstructure.exti_line=exti_line17;
exti_initstructure.exti_linecmd =enable;
exti_initstructure.exti_mode=exti_mode_interrupt;
exti_initstructure.exti_trigger=exti_trigger_rising;
exti_init(&exti_initstructure);
nvic_initstructure.nvic_irqchannel = rtc_wkup_irqn ;
nvic_initstructure.nvic_irqchannelpreemptionpriority = 2;
nvic_initstructure.nvic_irqchannelsubpriority = 1;
nvic_initstructure.nvic_irqchannelcmd = enable;
nvic_init(&nvic_initstructure);
exti_clearitpendingbit(exti_line20);
exti_initstructure.exti_line=exti_line20;
exti_initstructure.exti_linecmd =enable;
exti_initstructure.exti_mode=exti_mode_interrupt;
exti_initstructure.exti_trigger=exti_trigger_rising;
exti_init(&exti_initstructure);
}

德州仪器2019Q2收入下滑9%,是否受贸易战影响?
英特尔Kaby Lake处理器上市时间曝光
物联网产业“拐点”——物的连接超越人的连接
特斯拉大扩张背后的残酷现实
Vishay推出新款TrenchFET功率MOSFET---Si8424CDB、Si8425DB
STM32单片机RTC时钟的使用方法及步骤
Windows 10 20H2功能更新已完成,将知道部署到商用设备
科创板沃尔德独立董事强桂英介绍、履历信息
小米5C值不值得买?对比小米5和红米Note 4X就知道答案
光伏组件和并网逆变器如何功率配置
【电子大讲堂】浅析防反接保护电路
对OTL胆管耳放新的思考
江东新区正在建设一个零碳智慧新城和智能电网综合项目
物联网改善废物管理流程的解决方案
苹果 WWDC 2018 前瞻:除了更新系统外还有哪些新科技
可换刀刃的无感螺丝刀
便携式3D激光扫描仪手持式激光扫描仪对车毂的三维扫描检测汽车轮
为什么人人都要做视频号?
大数据对于农业是如何带来影响的
iphone8什么时候上市?iphone8最新消息:iphone8即将上市,iPhone 8国内首发,价格是这样!你准备好吗?