本文实例代码是:RTC_SetPrescaler(32768-1); 外部低速时钟频率为32.768K,我们要达到1秒计数(RTC_CNT)一次,则需要分频32768. 3.RTC中断: RTC中断有三种: RTC_IT_SEC秒中断 RTC_IT_ALR闹钟中断 RTC_IT_OW(计数)溢出中断 本文实例是:RTC_ITConfig(RTC_IT_SEC, ENABLE); 使能RTC_IT_SEC秒中断,间隔1秒中断一次...
RTC_SetPrescaler(32768-1);RTC_WaitForLastTask();//每次写入,等待上一次操作完成 如果选择LSI:(LSI频率是40000hz,进行40000分频,得到RTC频率1hz) RTC_SetPrescaler(40000-1);RTC_WaitForLastTask(); 1.6 配置CNT,给RTC初始时间 RTC_SetCounter(1672588795);//时间戳 2023-1-1 15:59:55//如果不设置,就从1970...
RTC_WaitForLastTask(); RTC_SetPrescaler(32768 - 1); RTC_WaitForLastTask(); MyRTC_SetTime();BKP_WriteBackupRegister(BKP_DR1, 0xA5A5); } else { RTC_WaitForSynchro(); RTC_WaitForLastTask(); } } void MyRTC_SetTime(void) { time_t time_cnt; struct tm time_date; time_date.tm_year = ...
// 等待APB1与RTC时钟同步RTC_SetPrescaler(32768-1); // 1s溢出一次RTC_WaitForLastTask(); // ...
RTC_SetPrescaler(32767);//设置RTC时钟分频值为32767 RTC_WaitForLastTask();//等待最近一次对RTC寄存器的写操作完成 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//NVIC_Group:先占优先级2位,从优先级2位 NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn;//配置为RTC中断 ...
4.等待RTC和APB1时钟同步 点击查看代码 RTC_WaitForSynchro(); //等待同步 RTC_WaitForLastTask(); //等待上一次操作完成 5.设置RTC预分频器(实际为PRL重装载寄存器),外部低速晶振为32.768K 点击查看代码 RTC_SetPrescaler(32768 - 1); //设置RTC预分频器,预分频后的计数频率为1Hz ...
RTC_SetPrescaler(32767); // 这里配置了预分频值,大家可以打开函数库看看这个函数的 内部的代码,里面就有包含了2、3、4 讲述的操作。 补充:根据以下公式,这些位用来定义计数器的时钟频率: fTR_CLK = fRTCCLK/(PRL[19:0]+1) , 我们LSE 是 32.768KHZ = 32768Hz,由上述公式就可以知道最终f TR_CLK = ...
本文实例代码是:RTC_SetPrescaler(32768-1); 外部低速时钟频率为32.768K,我们要达到1秒计数(RTC_CNT)一次,则需要分频32768. 3.RTC中断: RTC中断有三种: RTC_IT_SEC秒中断 RTC_IT_ALR闹钟中断 RTC_IT_OW(计数)溢出中断 本文实例是:RTC_ITConfig(RTC_IT_SEC, ENABLE); ...
1、由公式215 = 32768,可知32768Hz分频15次后正好1Hz。 2、RTC时间是以振荡频率来计算的。震荡频率越高,时间的准确性越高。 3、工程师长期实践得出32.768KHZ可以获得非常准确的时钟信息。 4、形成规范和统一。 STM32关于RTC原理介绍 STM32F103系列MCU提供了一个秒中断源和一个闹钟中断源,修改计数器的值可以重新设...
这个初始化的流程如下:使用RCC_APB1PeriphClockCmd使能PWR和BKP区域(即备份域)的时钟系统,使用PWR_BackupAccessCmd设置允许对BKP区域的访问,使能LSE时钟或LSI时钟,选择LSE或LSI作为RTC的时钟源并使能RTC时钟,利用库函数RTC_WaitFor Synchro对备份域和APB进行同步,用RTC_ITConfig使能秒中断,使用RTC_SetPrescaler分频配置把...