STM8单片机rtc时钟代码分享

发布者:MysticGlow最新更新时间:2020-08-05 来源: elecfans关键字:STM8  单片机  rtc时钟 手机看文章 扫描二维码
随时随地手机看文章

STM8 rtc时钟可以使用内部低频时钟源,或者外部低速32768Hz时钟源,关于rtc部分代码如下:


#include

#include

voidinit_rtc(void)

{

RTC_InitTypeDefRTC_InitStr;

RTC_TimeTypeDefRTC_TImeStr;

RTC_DateTypeDefRTC_DateStr;

STM8单片机rtc时钟代码分享

#if0

/*LSI*/

CLK_RTCClockConfig(CLK_RTCCLKSource_LSI,CLK_RTCCLKDiv_1);

CLK_PeripheralClockConfig(CLK_Peripheral_RTC,ENABLE);

RTC_InitStr.RTC_HourFormat=RTC_HourFormat_24;

RTC_InitStr.RTC_AsynchPrediv=0x7C;

RTC_InitStr.RTC_SynchPrediv=0x012F;

RTC_Init(&RTC_InitStr);

#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_Peripheral_RTC,ENABLE);

RTC_InitStr.RTC_HourFormat=RTC_HourFormat_24;

RTC_InitStr.RTC_AsynchPrediv=127;

RTC_InitStr.RTC_SynchPrediv=255;

RTC_Init(&RTC_InitStr);

#endif

RTC_TImeStrucTInit(&RTC_TImeStr);

RTC_TimeStr.RTC_Hours=00;

RTC_TimeStr.RTC_Minutes=00;

RTC_TimeStr.RTC_Seconds=00;

RTC_SetTime(RTC_Format_BIN,&RTC_TimeStr);

RTC_DateStructInit(&RTC_DateStr);

RTC_DateStr.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,&RTC_DateStr);

}

voidrtc_get_time(char*buf)

{

RTC_TimeTypeDefRTC_TimeStr;

while(RTC_WaitForSynchro()!=SUCCESS);

RTC_GetTime(RTC_Format_BIN,&RTC_TimeStr);

sprintf(buf,“%02d:%02d:%02d”,

RTC_TimeStr.RTC_Hours&0xff,RTC_TimeStr.RTC_Minutes&0xff,RTC_TimeStr.RTC_Seconds&0xff);

}

voidrtc_get_date(char*buf)

{

RTC_DateTypeDefRTC_DateStr;

while(RTC_WaitForSynchro()!=SUCCESS);

RTC_GetDate(RTC_Format_BIN,&RTC_DateStr);

sprintf(buf,“%04d-%02d-%02d”,

(RTC_DateStr.RTC_Year&0xff)+2000,RTC_DateStr.RTC_Month&0xff,RTC_DateStr.RTC_Date&0xff);

}

关于rtc定时唤醒,进入halt模式使用编译器提供的halt()函数就可以了,如果需要定时唤醒,需要对rtc做相应的配置,代码如下:

/*maximumwakeuptimeis(0xFFFF+1)*31.25ms=2048s*/

voidinit_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);

}

这里配置的是800×31.25=25s唤醒一次,唤醒之后,触发rtc唤醒中断,可以在中断函数中做相关处理,如果需要再次进入halt模式,重新调用halt()函数就可以了。

关键字:STM8  单片机  rtc时钟 引用地址:STM8单片机rtc时钟代码分享

上一篇:微雪电子STM8 QFP44测试座介绍
下一篇:STM8自带输入捕获功能学习

推荐阅读最新更新时间:2024-11-09 22:46

单片机做显示器信号发生器
  在 维修 显示器 时,一般都是接 电脑 主机,经常拔插信号线很不方便。本文介绍的显示器信号发生器就可以替代电脑主机,给显示器一个信号,在维修时能显示各种信号,而且体积很小,携带在外维修也很方便。   我做的这个显示器信号发生器是在国外网站www.alexm.times.lv/vga_tester.htm看到的,电路原理图见下图,   PCB图见下图。主要是用单片机PICl6F84A来输出信号,74HCl64用来显示编码。一般 市场 上销售的彩显信号发生器都在130到200多元,而这个电路整个成本不到40元。   主要器件PICl6F84A市场价在12元左右,一些单片机网站都可以买到。 数码 管是共阳单管,VG
[单片机]
用<font color='red'>单片机</font>做显示器信号发生器
C8051F系列单片机系统的各部位功耗分析
在控制终端系统设计中,当系统要求整体功耗偏低时,C8051F系列单片机是一个最佳的选择。它们拥有灵活的时钟硬件,使系统能够方便地在高效运作模式与低功耗模式问进行转换,智能的电源管理模式能够在正常工作及待机状态自由切换,从而降低整个系统的能量损耗;当工作频率低于10kHz时,时钟丢失检测器(MCD)能够引发系统产生复位,确保系统工作的安全可靠。 1 C8051F各部分组件的功耗 当一个系统对功耗要求严格时,可以在硬件电路建立前首先粗略计算一下整个系统所需的功耗。由于C8051F系列单片机为数模混合SOC系统,能够实现整个设计的大部分功能,因此整个设计系统的功耗将主要集中在C805IF系列单片机的能量消耗上。 整个单片机系统的功耗
[单片机]
单片机C语言之串口通信协议
现实生活中, 我们总是要与人打交道,互通有无。单片机也一样,需要跟各种设备交互。例如汽车的显示仪表需要知道汽车的转速及电动机的运行参数,那么显示仪表就需要从汽车的底层控制器取得数据。而这个数据的获得过程就是一个通信过程。类似的例子还有控制器通常是单片机或者PLC与变频器的通信。通信的双方需要遵守一套既定的规则也称为协议,这就好比我们人之间的对话,需要在双方都遵守一套语言语法规则才有可能达成对话。 通信协议又分为硬件层协议和软件层协议。硬件层协议主要规范了物理上的连线,传输电平信号及传输的秩序等硬件性质的内容。常用的硬件协议有串口,IIC, SPI, RS485, CAN和 USB。软件层协议则更侧重上层应用的规范,比如modbus
[单片机]
AVR单片机学习活动之带你学会WinAVR
对于GCC(注:本文中所说GCC与WINAVR是同一个概念)的介绍这里不做赘述,对于学习AVR单片机的朋友相信都听说过这款编译软件。AVR的开发软件很很多,下面是本人在网上搜索到的对于几个编译软件的一点比较,仅供参考: 相信对于每个已经在学习AVR的朋友都有一款自己喜欢使用的编译软件,我们推荐使用GCC,原因是它是真正的免费的,对C语言的支持是很好的。可能很多朋友对于使用汇编编程还是使用C语言编程都有不同的见解,在这里我们推荐使用相对高级的C语言进行编程,现在一个好的编译软件对于程序的优化是可以让人接受的,其编译出的程序效率足以满足我们的要求,并且其良好的可移植性为不同平台下的程序编写提供了方便。 这里是GCC的下载页面:
[单片机]
AVR<font color='red'>单片机</font>学习活动之带你学会WinAVR
采用AT89S51单片机的冲床控制器设计
本文介绍了一种用Atmel89S51单片机仿真PLC控制的方法,设计适合刚性离合器冲床的控制器,介绍了用光电隔离的输入输出电路的基本构成和工作原理,重点介绍了内部键盘显示电路的设计思想,同时给出了冲床控制的电器原理图。 系统硬件配置以AT89S51单片机为核心。AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4Kb ISP(In-system programmable)可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,内置看门狗(WDT)电路。 功能强大的AT89S51可为许多嵌入式控制应用系统提供高
[单片机]
msp430f149单片机串口C程序
msp430f149单片机简介: MSP430系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16位超低功耗、具有精简指令集(RISC)的混合信号处理器(Mixed Signal Processor)。 msp430f149是基于闪存或 ROM 的超低功耗 MCU,提供 8MIPS,工作电压为 1.8V - 3.6V,具有高达 60KB 的闪存和各种高性能模拟及智能数字外设。 超低功耗低至: 0.1μA RAM (保持模式) 0.7μA (实时时钟模式) 200μA/MIPS (工作模式) 在 6μs 之内快速从待机模式唤醒 器件参数: 闪存选项:1KB – 60KB ROM 选项:1KB – 16KB R
[单片机]
stm8s105k4单片机PWM波配置
//ccr = 0~499 void setPWM1(unsigned short ccr){//PC1 TIM1_CCR1H = (unsigned char)(ccr 8); TIM1_CCR1L = (unsigned char)(ccr & 0xff); } void setPWM2(unsigned short ccr){//PC2 TIM1_CCR2H = (unsigned char)(ccr 8); TIM1_CCR2L = (unsigned char)(ccr & 0xff); } void setPWM3(unsigned short ccr){//PC3 TIM1_CCR3H = (unsign
[单片机]
基于LabVIEW的电机转速监测系统的设计
LabVIEW是 美国国家仪器 司(National Instrument)开发的一种虚拟仪器平台,是一种用图标代码来代替文本式编程语言的开发工具。其通过在表示不同功能节点的图标之间连线来完成上位机的程序,在这一点上,其完全不同于以往基于文本的传统开发语言。LabVIEW功能强大、操作灵活,使用图形化的编程语言,大幅节省了程序的开发周期,且其运行速度不受影响,体现出较高的效率,被广泛应用于自动测量系统、工业过程自动化、实验室仿真等领域。 以往利用LabVIEW设计数据采集监测系统时,通常采用数据采集卡进行前端信号的采集,但是其价格昂贵。文中设计了一种基于LabVIEW和STC12系列单片机的电机转速监测系统,不仅节约了设计成
[单片机]
基于LabVIEW的电机转速监测系统的设计
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved