STM8单片机rtc时钟的设计.doc

上传人:白大夫 文档编号:3273864 上传时间:2019-08-07 格式:DOC 页数:3 大小:20.50KB
返回 下载 相关 举报
STM8单片机rtc时钟的设计.doc_第1页
第1页 / 共3页
亲,该文档总共3页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《STM8单片机rtc时钟的设计.doc》由会员分享,可在线阅读,更多相关《STM8单片机rtc时钟的设计.doc(3页珍藏版)》请在三一文库上搜索。

1、STM8单片机rtc时钟的设计STM8 rtc时钟可以使用内部低频时钟源,或者外部低速32768Hz时钟源,关于rtc部分代码如下:#include#includevoidinit_rtc(void)RTC_InitTypeDefRTC_InitStr;RTC_TimeTypeDefRTC_TImeStr;RTC_DateTypeDefRTC_DateStr;#if0/*LSI*/CLK_RTCClockConfig(CLK_RTCCLKSource_LSI,CLK_RTCCLKDiv_1);CLK_PeripheralClockConfig(CLK_Peripheral_RTC,ENABLE

2、);RTC_InitStr.RTC_HourFormat=RTC_HourFormat_24;RTC_InitStr.RTC_AsynchPrediv=0x7C;RTC_InitStr.RTC_SynchPrediv=0x012F;RTC_Init(#else/*LSE*/CLK_LSEConfig(CLK_LSE_ON);while(CLK_GetFlagStatus(CLK_FLAG_LSERDY)=RESET);CLK_RTCClockConfig(CLK_RTCCLKSource_LSE,CLK_RTCCLKDiv_1);CLK_PeripheralClockConfig(CLK_Pe

3、ripheral_RTC,ENABLE);RTC_InitStr.RTC_HourFormat=RTC_HourFormat_24;RTC_InitStr.RTC_AsynchPrediv=127;RTC_InitStr.RTC_SynchPrediv=255;RTC_Init(#endifRTC_TImeStrucTInit(RTC_TimeStr.RTC_Hours=00;RTC_TimeStr.RTC_Minutes=00;RTC_TimeStr.RTC_Seconds=00;RTC_SetTime(RTC_Format_BIN,RTC_DateStructInit(RTC_DateSt

4、r.RTC_WeekDay=RTC_Weekday_Tuesday;RTC_DateStr.RTC_Date=2;RTC_DateStr.RTC_Month=RTC_Month_February;RTC_DateStr.RTC_Year=16;RTC_SetDate(RTC_Format_BIN,voidrtc_get_time(char*buf)RTC_TimeTypeDefRTC_TimeStr;while(RTC_WaitForSynchro()!=SUCCESS);RTC_GetTime(RTC_Format_BIN,sprintf(buf,“%02d:%02d:%02d”,RTC_T

5、imeStr.RTC_Hoursvoidrtc_get_date(char*buf)RTC_DateTypeDefRTC_DateStr;while(RTC_WaitForSynchro()!=SUCCESS);RTC_GetDate(RTC_Format_BIN,sprintf(buf,“%04d-%02d-%02d”,(RTC_DateStr.RTC_Year关于rtc定时唤醒,进入halt模式使用编译器提供的halt()函数就可以了,如果需要定时唤醒,需要对rtc做相应的配置,代码如下:/*maximumwakeuptimeis(0xFFFF+1)*31.25ms=2048s*/void

6、init_rtc(void)CLK_LSEConfig(CLK_LSE_ON);while(CLK_GetFlagStatus(CLK_FLAG_LSERDY)=RESET);CLK_RTCClockConfig(CLK_RTCCLKSource_LSE,CLK_RTCCLKDiv_64);CLK_PeripheralClockConfig(CLK_Peripheral_RTC,ENABLE);RTC_WakeUpClockConfig(RTC_WakeUpClock_RTCCLK_Div16);RTC_ITConfig(RTC_IT_WUT,ENABLE);enableInterrupts();RTC_SetWakeUpCounter(800);RTC_WakeUpCmd(ENABLE);这里配置的是80031.25=25s唤醒一次,唤醒之后,触发rtc唤醒中断,可以在中断函数中做相关处理,如果需要再次进入halt模式,重新调用halt()函数就可以了。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1