STM32L152 RTC 日历和定时中断使用

发布者:TranquilSmile最新更新时间:2018-09-08 来源: eefocus关键字:STM32L152  RTC  日历  定时中断 手机看文章 扫描二维码
随时随地手机看文章

1、开发平台:


STM32L1-Discovery Keil 4


2、RTC Calendar和wake up


STM32L152RC 带有一个硬件的实时时钟模块(RTC),可为用户提供日历功能,RTC也可以提供一个自动定时的功能,相当于是一个睡眠定时器,下面就看看该如何配置日历和定时:

 void SYS_RTCInit(void)

{

    static NVIC_InitTypeDef  NVIC_InitStructure;

    static EXTI_InitTypeDef  EXTI_InitStructure;

    static RTC_InitTypeDef RTC_InitStructure;

    static RTC_TimeTypeDef RTC_TimeStructure;

    static uint32_t AsynchPrediv = 0, SynchPrediv = 0;


    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);


    /*!< Allow access to RTC */

    PWR_RTCAccessCmd(ENABLE);


    /*!< 使能外部低速时钟 */

    RCC_LSEConfig(RCC_LSE_ON);


    /*!< 等待外部低速时钟就绪 */

    while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)

    {}


    /*!< 配置RTC时钟来源 */

    RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);


    /*!< 使能RTC时钟 */

    RCC_RTCCLKCmd(ENABLE);


    /*!< Wait for RTC APB registers synchronisation */

    RTC_WaitForSynchro();


    //配置日历

    /* 配置RTC数据寄存器以及时钟分频 */

    SynchPrediv = 0xFF;

    AsynchPrediv = 0x7F;//分频为1Hz

    RTC_InitStructure.RTC_AsynchPrediv = AsynchPrediv;

    RTC_InitStructure.RTC_SynchPrediv = SynchPrediv;

    RTC_InitStructure.RTC_HourFormat = RTC_HourFormat_24;//24小时制

    /* 检查RTC初始化 */

    if (RTC_Init(&RTC_InitStructure) == ERROR)

    {

        printf("\n\r        /!\\***** RTC Prescaler Config failed ********/!\\ \n\r");

    }

    //配置时间 9点15分01秒

    RTC_TimeStructure.RTC_H12     = RTC_H12_AM;

    RTC_TimeStructure.RTC_Hours = 0x09;

    RTC_TimeStructure.RTC_Minutes = 0x15;

    RTC_TimeStructure.RTC_Seconds = 0x01;

    RTC_SetTime(RTC_Format_BCD, &RTC_TimeStructure);


    //配置自动定时功能

    /* 中断配置 *******************************************************/

    EXTI_ClearITPendingBit(EXTI_Line20);

    EXTI_InitStructure.EXTI_Line = EXTI_Line20;

    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;

    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;

    EXTI_InitStructure.EXTI_LineCmd = ENABLE;

    EXTI_Init(&EXTI_InitStructure);


    /*使能 RTC Wakeup Interrupt */

    NVIC_InitStructure.NVIC_IRQChannel = RTC_WKUP_IRQn;

    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

    NVIC_Init(&NVIC_InitStructure);


    /* RTC 唤醒中端配置: Clock Source: RTCDiv_16, Wakeup Time Base: 4s */

    RTC_WakeUpClockConfig(RTC_WakeUpClock_RTCCLK_Div16);

    RTC_SetWakeUpCounter(0x1FFF);//0x1FFF = 8191; 4s = (8191+1)*(1/(32768/16))


    /* 使能 the Wakeup Interrupt */

    RTC_ITConfig(RTC_IT_WUT, ENABLE);  

}


使能了RTC的定时中断,那么就要编写中断服务子程序,如下:

void RTC_WKUP_IRQHandler(void)

{

  if(RTC_GetITStatus(RTC_IT_WUT) != RESET)

  {

    RTC_ClearITPendingBit(RTC_IT_WUT);

    EXTI_ClearITPendingBit(EXTI_Line20);

  } 

}


关键字:STM32L152  RTC  日历  定时中断 引用地址:STM32L152 RTC 日历和定时中断使用

上一篇:STM32L152 外部中断配置
下一篇:STM32L152RC 在keil4中使用printf()和scanf() 函数

推荐阅读最新更新时间:2024-03-16 16:13

外部中断定时中断、串口中断C51程序
/******************************** 文件所用资源 1.外部中断0、1 定时中断0、1 串口中断 2.端口:P3.0,P3.1,P3.3,P3.4,P3.5 ********************************/ sfr ISP_CONTR = 0xe7; /*************************** 外部中断0服务子程序 ****************************/ /*void Int0() interrupt 0 { }*/ /*************************** 定时中断0服务子程序 **********************
[单片机]
STM8S 中断唤醒,定时唤醒,窗口看门狗
一、 STM8S 外部中断进行唤醒 先了解一下STM8S的中断资源 再看看STM8S的中断管理。STM8S采用软件优先级和硬件优先级来控制一个中断的响应,先比较软件优先级只有当软件优先级一致时才会比较硬件优先级,由于硬件优先级具有唯一性,这样便保证了某一时刻定会只有一个中断被处理。 要使用外部中断,只需简单的配置一下EXTI_CR1寄存器,并将主程序main的软件优先级置为0即可。默认情况下自复位开始,主程序的软件优先级被设置为3,处于最高软件优先级,仅有TRAP,TLI,RESET中断能够打断,其余的中断都是不会被响应的。 为了防止中断过程中被别的优先级高的中断所打断,可以将当前优先级置为最高3级。 代
[单片机]
STM8S <font color='red'>中断</font>唤醒,<font color='red'>定时</font>唤醒,窗口看门狗
ARMLinux驱动RTC(实时时钟)驱动分析
硬件平台:FL2440(S3C2440) 内核版本:Linux 2.6.28 主机平台:Ubuntu 11.04 内核版本:Linux 2.6.39 交叉编译器版本:arm-linux-gcc 3.4.1 原创作品,转载请标明出处http://blog.csdn.net/yming0221/article/details/6584285 1、实时时钟概述 实时时钟(RTC)单元可以在断电的情况下使用纽扣电池继续计时工作。RTC使用STRB/LDRB ARM操作传输二进制码十进制数的8位数据给CPU。其中的数据包括秒、分、时、日期、天、月、年的时间信息。可以执行报警功能。 2、实时时钟操作 下面是RTC模块的电路图
[单片机]
ARMLinux驱动<font color='red'>RTC</font>(实时时钟)驱动分析
RTC的I2C总线铁电存储器FM31256
  FM31256是由Ramtron公司推出的新一代多功能系统监控和非易失性铁电存储芯片。与其他非易失性存储器比较,它具有如下优点: 读/写速度快,没有写等待时间;功耗低,静态电流小于1 mA,写入电流小于150 mA;擦写使用寿命长,芯片的擦写次数为100亿次,比一般的EEPROM存储器高10万倍,即使每秒读/写30次,也能用10年;读/写的无限性,芯片擦写次数超过100亿次后,还能和SRAM一样读/写。   铁电存储器(FRAM)的核心技术是铁电晶体材料。这一特殊材料使铁电存储器同时拥有随机存取存储器(RAM)和非易失性存储的特性。本文介绍了FM31256的主要功能,并具体给出了基于嵌入式C语言编写的存储器读/写程序。 1
[单片机]
带<font color='red'>RTC</font>的I2C总线铁电存储器FM31256
51的单片机定时中断基本概念及简单实验
定时器相关内容 CPU时序的有关知识 ①振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡周期)。 ②状态周期:2 个振荡周期为 1 个状态周期,用 S 表示。振荡周期又称 S 周期或时钟周期。 ③机器周期:1 个机器周期含 6 个状态周期,12 个振荡周期。 即机器周期=6个状态周期=12个震荡周期。 ④指令周期:完成 1 条指令所占用的全部时间,它以机器周期为单位。 外接晶振为 12MHz 时,51 单片机相关周期的具体值为: 振荡周期=1/12us; 状态周期=1/6us; 机器周期=1us; 指令周期=1~4us; 定时器/计数器 ①51 单片机有两组定时器/计数器,因为既可以定时,又可以计数,故称之为定时器
[单片机]
51的单片机<font color='red'>定时</font><font color='red'>中断</font>基本概念及简单实验
简要理解MSP430的中断(以IO和定时器为例)
感觉应该会有很多刚刚学单片机的人跟我一样最初对中断有挺大疑惑,今天就简单写一写目前我对于中断的理解吧。 我呢首先接触的是FPGA,由于FPGA是并行运算,所以里面是没有中断的。而MSP430是串行运算,程序只能一个一个执行,于是在430中需要中断。 一、基本 那么什么是中断呢。我们可以认为是放下目前要做的事A,去做另外的事B,做完B后再回来继续做A。比如说我们要写一个程序,中途渴了要去喝水,我们喝完水后再继续写程序。停止写程序就相当于中断,而喝水就相当于是中断里面做的事情。中断里面做的事情就是中断函数。 把它类比到函数中,写程序就相当于main函数,那么去喝水就相当于是中断函数。 430中的IO中的一部分、定时器、
[单片机]
STM32F3实时时钟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
[单片机]
STM32 RTC实时时钟(二)
上次实验完成了对实时时钟的基本功能——计时的实验,这次在计时的基础上对RTC的可编程闹钟的功能进行测试。 RTC 单元提供两个可编程闹钟,即闹钟 A 和闹钟 B。 可通过将 RTC_CR 寄存器中的 ALRAE 和 ALRBE 位置 1 来使能可编程闹钟功能。如果日历亚秒、秒、分钟、小时、日期或日分别与闹钟寄存器RTC_ALRMASSR/RTC_ALRMAR 和RTC_ALRMBSSR/RTC_ALRMBR 中编程的值相匹配,则 ALRAF 和 ALRBF 标志会被置为1。可通过 RTC_ALRMAR 和 RTC_ALRMBR 寄存器的 MSKx 位以及 RTC_ALRMASSR 和RTC_ALRMBSSR 寄
[单片机]
STM32 <font color='red'>RTC</font>实时时钟(二)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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