stm32 的RTC 时钟程序

发布者:太白山人最新更新时间:2016-08-05 来源: eefocus关键字:stm32  RTC  时钟程序 手机看文章 扫描二维码
随时随地手机看文章
前些日子做了stm32 RTC时钟的程序,现在把它记录下来。

首先配置RTC,,使用外部时钟32.768KHz。其中配置了秒中断。

RTCFirstConfigure()程序是第一次配置RTC,如果配置后以后上电不需要重新配置,如果RTC时钟快了,可内部校准。

void RTCFirstConfigure()   //first ini
   {
    RCC_BackupResetCmd(ENABLE);
    RCC_BackupResetCmd(DISABLE);
     
     RCC_LSEConfig(RCC_LSE_ON);  //enable LSE clock 32.768K
     while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)
     {}
     // Select LSE as RTC Clock Source 
     RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);
     //Enable RTC Clock /
     RCC_RTCCLKCmd(ENABLE);
     // Wait for RTC registers synchronization /
     RTC_WaitForSynchro();
     // Wait until last write operation on RTC registers has finished /
     RTC_WaitForLastTask();
     // Enable the RTC Second Interrupt/
     RTC_ITConfig(RTC_IT_SEC, ENABLE);
     RTC_WaitForLastTask();
     RTC_SetPrescaler(32767); // RTC period = RTCCLK/RTC_PR = (32.768KHz)/(32767+1)/
     RTC_WaitForLastTask();
     
   //  BKP_SetRTCCalibrationValue(120); //RTC Calibration
       
     RCC_ClearFlag();
   }

 

 RTCNorConfigure()程序配置完后每次上电都运行的程序

  void RTCNorConfigure()    //normal ini
  {
    RTC_WaitForSynchro();
    RTC_WaitForLastTask();
    RTC_SetPrescaler(32767);
    BKP_SetRTCCalibrationValue(0); //RTC Calibration
    RTC_ITConfig(RTC_IT_SEC, ENABLE);
    RTC_WaitForLastTask();
    RCC_ClearFlag();  
  }

int main(void)
{
  /* System Clocks Configuration */
  RCC_Configuration();       
  /* NVIC configuration */
  NVIC_Configuration();

  /* Configure the GPIO ports */
  GPIO_Configuration();

  UART_Configuration();
 if (BKP_ReadBackupRegister(BKP_DR1) != 0xA4A4)   //
  //if(GPIO_ReadInputBit(GPIOA,GPIO_Pin_5)==0x01)
  {
    RTCFirstConfigure();
    Time_Adjust(2011,5,20,18,12,0);
    BKP_WriteBackupRegister(BKP_DR1, 0xA4A4);
  }
 else 
  {
    RTCNorConfigure() ;
  }
  
   // BKP_WriteBackupRegister(BKP_DR2, 0x1234);

  while (1)
  {
  }
}

关键字:stm32  RTC  时钟程序 引用地址:stm32 的RTC 时钟程序

上一篇:STM32学习笔记--EXTI
下一篇:STM32中NVIC(嵌套向量中断控制)的理解

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

STM32 系统时钟和SysTick定时器
1.STM32的时钟系统 在STM32中,一共有5个时钟源,分别是HSI、HSE、LSI、LSE、PLL (1)HSI是高速内部时钟,RC振荡器,频率为8MHz; (2)HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围是4MHz – 16MHz; (3)LSI是低速内部时钟,RC振荡器,频率为40KHz; (4)LSE是低速外部时钟,接频率为32.768KHz的石英晶体; (5)PLL为锁相环倍频输出,严格的来说并不算一个独立的时钟源,PLL的输入可以接HSI/2、HSE或者HSE/2。倍频可选择为2 – 16倍,但是其输出频率最大不得超过72MHz。 其中,40kHz的LSI供独
[单片机]
STM32单片机为什么要中断
STM32中断主题: 1什么是中断 暂停原先的程序或事情,执行另外一些程序或事情,执行完成后返回原来的程序。 2为什么要中断 因为另一些程序或事情比你原先正在做的事情要重要,或者这些突发事情你是无法控制它的来临的。 3 中断的分类 按不同方法进行分类 3.1 内部中断,外部中断 (向量表中灰色为内部) 3.2 可设置中断,固化中断 3.3 中断向量表 (cl级别的芯片有10个内部 ,0~67个外部,一些没用到,其中通用化 中断编号0~17,个性化中断编号18~67) 3.4 优先级别 (由主优先级和从优先级组成,主从优先级可以通过4个位进行设置) 4 中断的组成 具体中断的名称 中断的地址 用来保存一条跳转指令,跳到哪里去
[单片机]
STM32-HAL
为了使用STM32 cubeMX工具快速完成设计,打算从StdPeriph_Lib换成HAL_Driver。初使用cubeMX,感觉就像从DOS时代迈入图形界面时代,而且对STM的所有系列有最好的支持。 在HAL库中: 常用功能: HAL_Delay() //毫秒延时,精度还是可以的。 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_9,GPIO_PIN_RESET);//GPIO_PIN_RESET而不是RESET了。 时钟配置: 如果懂得STM32的架构,配置起来简直不能太简单,但好像有个bug就是配置为HSI时钟无法DEBUG调试。 串口中断: 通过HA
[单片机]
STM32-HAL
STM32的位操作的方法
STM32 之位带操作 Cortex-M3 支持了位操作后,可以使用普通的加载/存储指令来对单一的比特进行读写。   在 CM3 支持的位带中,有两个区中实现了位带。   其中一个是 SRAM 区的最低 1MB 范围, 0x20000000 ‐ 0x200FFFFF(SRAM 区中的最低 1MB);   第二个则是片内外设区的最低 1MB范围, 0x40000000 ‐ 0x400FFFFF(片上外设区中的最低 1MB)。   这两个区中的地址除了可以像普通的 RAM 一样使用外,它们还都有自己的“位带别名区”,位带别名区把每个比特膨胀成一个 32 位的字。当你通过位带别名区访问这些字时,就可以达到访问原始比特的目的。   C
[单片机]
<font color='red'>STM32</font>的位操作的方法
STM32实现单麦克风实时神经网络降噪
本文是基于NNoM神经网络框架实现的。NNoM是一个为单片机定制的神经网络框架,可以实现TensorFlow 模型的量化和部署到单片机上,可以在Cortex M4/7/33等ARM内核的单片机上实现加速(STM32,LPC,Nordic nRF 等等)。 NNoM和本文代码可以在后台回复:“麦克风降噪”领取。 STM32实现单麦克风实时神经网络(RNN)降噪演示 硬声创作者:麻博士在科研 这个例子是根据著名的 RNNoise (https://jmvalin.ca/demo/rnnoise/) 的降噪方法进行设计的。整体进行了一些简化和定点化的一些修改。 本例与RNNoise主要的区别如下: 此例子并非从RNN
[单片机]
<font color='red'>STM32</font>实现单麦克风实时神经网络降噪
调试STM32 time遇到的问题小结
程序中增加新的time,在初始化中不能进行写入寄存器。原因是没有进行相关的初始化,有个寄存器没有进行使能操作。 程序如下: void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) { //GPIO_InitTypeDef GPIO_InitStruct; if(htim_base- Instance==TIM7) { __TIM7_CLK_ENABLE(); HAL_NVIC_SetPriority(TIM7_IRQn, 0, 0); HAL_NVIC_EnableIRQ(TIM7_IRQn); } else if(htim_base- In
[单片机]
STM32 时钟RCC相关配置参考stm32f10x_rcc.h
1. 时钟使能配置: RCC_LSEConfig()、RCC_HSEConfig()、 RCC_HSICmd()、RCC_LSICmd()、RCC_PLLCmd()...... 2. 时钟源相关配置: RCC_PLLConfig()、RCC_SYSCLKConfig()、 RCC_RTCCLKConf()..... 3. 分频系数选择配置: RCC_HCLKConfig()、RCC_PCLK1Config()、RCC_PCLK2Config()...... 4. 外设时钟使能: RCC_APB1PeriphClockCmd(); // APB1线上外设时钟使能 RCC_APB2PeriphC
[单片机]
<font color='red'>STM32</font> <font color='red'>时钟</font>RCC相关配置参考stm32f10x_rcc.h
STM32单片机FSMC的使用解析
在做项目的过程中遇到了这个问题,感觉文章写得不错,共享给对FSMC的使用怀有疑惑的同伴们! LCD有如下控制线: CS:Chip Select片选,低电平有效 RS:Register Select寄存器选择 WR:Write写信号,低电平有效 RD:Read读信号,低电平有效 RESET:重启信号,低电平有效 DB0-DB15:数据线 假如这些线,全部用普通IO口控制。根据LCD控制芯片手册(大部分控制芯片时序差不多): 如果情况如下: DB0-DB15的IO全部为1(表示数据0xff),也可以为其他任意值,这里以0xff为例。 CS为0(表示选上芯片,CS拉低时,芯片对传入的数据才会有效) RS为1(表示DB0-15上传
[单片机]
<font color='red'>STM32</font>单片机FSMC的使用解析
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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