历史上的今天

今天是:2024年09月08日(星期日)

2018年09月08日 | STM32L152 RTC 日历和定时中断使用

发布者:TranquilSmile 来源: 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() 函数

推荐阅读

在STM8L051中,管脚定义如下:其中RTC时钟管脚与USART通信管脚复用了故需要重映射管脚,将USART的TX RX的管脚映射到别的脚上去,使用下面的代码将TX RX映射到PA2 PA3去,  SYSCFG_RMPCR1 &= (uint8_t)((uint8_t)((uint8_t)0x011C << 4) | (uint8_t)0x0F);  SYSCFG_RMPCR1 |= (uint8_t)((uint16_t)0x011C & (uint16_t)0x00F0);之后只需正常配置PA2、PA3的模式,USART的参数即可实现USART通信。
近日,湖北小米长江产业基金合伙企业(有限合伙)投资了西安智多晶微电子有限公司,持股占比9.26%,成为该公司第四大股东。(图片来源:天眼查,下同)长江小米产业基金成立于2017年,目标规模120.00亿元人民币,由小米科技有限责任公司、湖北省长江经济带产业引导基金合伙企业(有限合伙)共同发起设立,基金将用于支持小米及小米生态链企业的业务拓展。...
相信对于电源工程师,示波器的功劳是不可替代的,一旦产品有问题就需要抓波形,抓时序,测试准确数值,以帮助工程师分析,处理,一切看波形说话。如何使测试的数据准确和可靠是非常重要的,准确的数字能够帮助我们,而失真的波形和数值只能误导我们。 很多工程师直接拿起探头就测试,根本不去检查探头是否需要补偿,示波器是否需要校验。示波器使用前需要...
1.基本原理因为程序目前处于裸板阶段,只能输出字符串,没有C语言的printf函数可以调用。但是在调试程序时,想像C语言一样调用printf来调试,因此只能自己来实现了。C语言中,printf函数的原型为:int printf(const char *format, ...);1.1 可变参数"…"参数有2个, “const char *format” 和 “…”,这个“…”就是可变参数,下面先讲解一下...

史海拾趣

问答坊 | AI 解惑

WINCE系统里面,从驱动发消息给AP到AP接收到这个消息的时间间隔是多少?有没什么好的方法测量这个时间间隔?

WINCE系统里面,从驱动发消息给AP到AP接收到这个消息的时间间隔是多少?有没什么好的方法测量这个时间间隔?…

查看全部问答∨

世界500强企业上海招聘

一.SE职位要求: 1、3年以上Linux核心/应用软件开发 2、熟悉面向对象的设计,C++,UML和XML 3、有网络编程经验者优先 4、英语熟练 二.SE职位要求: 1、学士学位或以上 2、超过2年的C++或Java开发经验 3、有Web开发经验者优先 4、英语 ...…

查看全部问答∨

简单的LED横流解决方案4

  此为 低损耗恒流反馈电路 􀂃优点•电流检测电阻的损耗达到最低•提供温度补偿 􀂃缺点•成本较高•无短路保护 􀂃电路成本高且复杂,功能有限•需要改进     谁能分析下 ...…

查看全部问答∨

usbasp驱动(适用于64位win7)

由于目前很多人用手提,而很多都是自带win7 64位操作系统,一般的usbasp驱动文件并不适用,故特别转适用的驱动文件,此文件经测试可用。特别提醒:使用AVR_fighter烧录软件时,需要将本共享文件目录下libusb0.dll和libusb0.sys复制到AVR_fighter目 ...…

查看全部问答∨

程序错误代码 哪位大侠帮帮忙啊

Error[Pe065]: expected a ";" D:\\msp430\\main.c 26 Warning[Pe012]: parsing restarts here after previous syntax error D:\\msp430\\main.c 119 Error while running C/C++ compiler…

查看全部问答∨

惰性气体或高真空中的小型晶体高值电阻温度稳定性1

测量系统的温度变化将带来热膨胀,从而改变电容[1],在电流中引入额外噪声。如果在环境温度(不加热也不冷却)下进行测量,在测量期间系统温度一般是足够稳定的。不过,如果需要与温度有关的测量,那么温度稳定性应当优于0.1K。 Temperature cha ...…

查看全部问答∨

【讨论】关于UCOS-ii中编写驱动的基本流程?

在linux和windows系统中,硬件驱动程序的开发都有比较固定的模式和流程,想问下在UCOS-ii系统中驱动程序的开发基本流程?有无驱动开发的通用模式?UCOS-ii的驱动程序和裸机的驱动程序有什么区别?裸机程序可以方便的转换成UCOS-ii系统驱动程序吗? ...…

查看全部问答∨

手把手教你使用TI_MSP430_LaunchPad

手把手教你使用TI_MSP430_LaunchPad,教大家如何用IAR进行MSP430 LanchPad开发。…

查看全部问答∨

51单片机智能小车设计资料分享

replyreload += \',\' + 1338777;51单片机智能小车设计资料分享   超声波倒车测距语音小车V1版本的效果图,从图中可以看出小车主要有五部分组成分别是小车车体、主控板、超声波收发器、LCD12864液晶屏、语音播报器。   V1版基本实现 ...…

查看全部问答∨

FPGA 和pc104 isa通讯

ISA协议不大明白,为什么有两个时序?即I/O时序和memory时序。 他们分别起什么作用? 有些电路图只用到 iord /iowd, 有些有到memrd/memwd, 这两种有什么区别吗?…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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