• 大小: 4.64MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-28
  • 语言: 其他
  • 标签: STM3  RT  

资源简介

STM32的RTC闹钟实验,采用库函数实现,使用方便,简单

资源截图

代码片段和文件信息


#include “includes.h“
#include “rtc.h“      

//第一次配置的时候更改这个值,并且断开电池和电源一段时间,保证电容电量也放完,或者短接vbat和GND
/*
    其实,在32.768K的晶振引脚上并个上1M(>1m也可以)的电阻就没事了,哪有那么多问题啊。
    主要是STM32的LSE反馈电阻有点大,并个电阻,就能减小反馈电阻,提高启振系数。相应的,LSE的功耗就会大一点。
    不过,没关系,STM32在使用外部电源时,内部软开关会把LSE的电源切换到外部电源的。
    1个40mAH的小电池,用3年应该没问题。
    3年,你这个产品还会不会还在使用都是个问题了。说不定早升级了。

*/
#define data_change 0x4456
#define RTCAlarm_Way 0  //0中断线方案,1 原子方案


_calendar_obj calendar;//时钟结构体 
 
static void RTC_NVIC_Config(void)
{
 NVIC_InitTypeDef NVIC_InitStructure;
 NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn;  //RTC全局中断
 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; 
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; 
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  //使能该通道中断
 NVIC_Init(&NVIC_InitStructure);
#if  (RTCAlarm_Way==0)
 NVIC_InitStructure.NVIC_IRQChannel = RTCAlarm_IRQn;  //闹钟中断
 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; //比RTC全局中断的优先级高
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; 
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 
 NVIC_Init(&NVIC_InitStructure);
#endif
}
#if    (RTCAlarm_Way==0)
static void RTC_Alarm_EXIT(void)

EXTI_InitTypeDef EXTI_InitStructure;
EXTI_ClearITPendingBit(EXTI_Line17);
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Line = EXTI_Line17;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
}
#endif
//实时时钟配置
//初始化RTC时钟同时检测时钟是否工作正常
//BKP->DR1用于保存是否第一次配置的设置
//返回0:正常
//其他:错误代码

u8 RTC_Init(void)
{
//检查是不是第一次配置时钟
u8 temp=0;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP ENABLE); //使能PWR和BKP外设时钟
    RCC_RTCCLKCmd(ENABLE); 
PWR_BackupAccessCmd(ENABLE); //使能后备寄存器访问  
if (BKP_ReadBackupRegister(BKP_DR1) != data_change) //从指定的后备寄存器中读出数据:读出了与写入的指定数据不相乎
{  
BKP_DeInit(); //复位备份区域 
RCC_LSEConfig(RCC_LSE_ON); //设置外部低速晶振(LSE)使用外设低速晶振
while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET&&temp<250) //检查指定的RCC标志位设置与否等待低速晶振就绪
{
temp++;
delay_ms(10);
}
if(temp>=250)
  {
   printf(“jingzhen-error\r\n“);
   return 1;//初始化时钟失败晶振有问题
}
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); //设置RTC时钟(RTCCLK)选择LSE作为RTC时钟    
RCC_RTCCLKCmd(ENABLE);                   //使能RTC时钟 
        RTC_WaitForSynchro();   //等待RTC寄存器(RTC_CNTRTC_ALR和RTC_PRL)与RTC APB时钟同步
RTC_WaitForLastTask();                   //等待最近一次对RTC寄存器的写操作完成

RTC_ITConfig(RTC_IT_SEC ENABLE); //使能RTC秒中断
RTC_ITConfig(RTC_IT_ALR ENABLE);   //使能RTC闹钟秒中断
RTC_WaitForLastTask(); //等待最近一次对RTC寄存器的写操作完成

RTC_EnterConfigMode();  // 允许配置
RTC_SetPrescaler(32767); //设置RTC预分频的值
RTC_WaitForLastTask(); //等待最近一次对RTC寄存器的写操作完成
        RTC_ExitConfigMode(); //退出配置模式

        BKP_WriteBackupRegister(BKP_DR1 data_change); //向指定的后备寄存器中写入用户程序数据

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      10571  2018-07-23 14:56  stm32的RTC闹钟实验\app\rtc.c

     文件       1109  2017-05-23 12:24  stm32的RTC闹钟实验\app\rtc.h

     文件     136014  2018-10-25 09:29  stm32的RTC闹钟实验\moban.map

    .......     71966  2018-11-15 16:51  stm32的RTC闹钟实验\moban.uvguix.Administrator

    .......     71924  2018-11-15 16:50  stm32的RTC闹钟实验\moban.uvguix_Administrator.bak

    .......     23555  2018-10-25 09:32  stm32的RTC闹钟实验\moban.uvoptx

    .......     22480  2018-10-25 09:29  stm32的RTC闹钟实验\moban.uvprojx

     文件      64039  2018-10-25 09:29  stm32的RTC闹钟实验\moban_moban.dep

    .......     23555  2018-10-25 09:29  stm32的RTC闹钟实验\moban_uvoptx.bak

    .......     21184  2018-07-23 14:49  stm32的RTC闹钟实验\moban_uvprojx.bak

     文件       3662  2018-10-25 09:29  stm32的RTC闹钟实验\output\core_cm3.crf

     文件        118  2018-10-25 09:29  stm32的RTC闹钟实验\output\core_cm3.d

     文件      10852  2018-10-25 09:29  stm32的RTC闹钟实验\output\core_cm3.o

     文件     347858  2018-10-25 09:29  stm32的RTC闹钟实验\output\delay.crf

     文件       1745  2018-10-25 09:29  stm32的RTC闹钟实验\output\delay.d

     文件     383200  2018-10-25 09:29  stm32的RTC闹钟实验\output\delay.o

     文件     354479  2018-10-25 09:29  stm32的RTC闹钟实验\output\includes.crf

     文件       2024  2018-10-25 09:29  stm32的RTC闹钟实验\output\includes.d

     文件     385692  2018-10-25 09:29  stm32的RTC闹钟实验\output\includes.o

     文件     354556  2018-10-25 09:29  stm32的RTC闹钟实验\output\main.crf

     文件       1876  2018-10-25 09:29  stm32的RTC闹钟实验\output\main.d

     文件     386664  2018-10-25 09:29  stm32的RTC闹钟实验\output\main.o

     文件     346981  2018-10-25 09:29  stm32的RTC闹钟实验\output\misc.crf

     文件       1706  2018-10-25 09:29  stm32的RTC闹钟实验\output\misc.d

     文件     382728  2018-10-25 09:29  stm32的RTC闹钟实验\output\misc.o

     文件     344664  2018-10-25 09:29  stm32的RTC闹钟实验\output\moban.axf

     文件        205  2018-11-15 16:51  stm32的RTC闹钟实验\output\moban.build_log.htm

     文件      15441  2018-10-25 09:29  stm32的RTC闹钟实验\output\moban.hex

     文件      59678  2018-10-25 09:29  stm32的RTC闹钟实验\output\moban.htm

     文件       1182  2018-10-25 09:29  stm32的RTC闹钟实验\output\moban.lnp

............此处省略163个文件信息

评论

共有 条评论