嵌入式蓝桥杯RTC最简单配置过程
首先我们要熟悉STM32固件库提供给我们的example
路径如下
STM32固件库v3.5\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples
然后找到两个例程
这里有两个文件 Calendar 和LSI_Calib 第一个文件主要是 LSE外部晶振的文件 第二个文件是LSI外部晶振的文件 所以 我们要使用内部晶振 但同时我们要利用LSE的函数操作
首先打开第一个文件Calender的main.c
从NVIC开始复制 一直看见串口结束
//因为过长只取函数名
void NVIC_Configuration(void)
....
void RTC_Configuration(void)
.....
uint32_t Time_Regulate(void)
....
void Time_Adjust(void)
....
void Time_Display(uint32_t TimeVar)
....
void Time_Show(void)
然后打开第二个文件LSI_Calib的main.c文件 找到 void RTC_Configuration(void) 替换掉 原来的 void RTC_Configuration(void)
这样做的目的用LSI内部晶振替换LSE外部晶振
void RTC_Configuration(void)
替换之后要调用一个中断处理函数 void NVIC_Configuration(void)在新的RTC函数文件里
NVIC_Configuration();
记得要加c语言库函数文件 不然printf找不到
#include "stdio.h"
接下我们找到这个函数
uint32_t Time_Regulate(void)
取一行有用的参数 然后将函数删除
Tmp_HH*3600 + Tmp_MM*60 + Tmp_SS
取出的函数我们将他放入我们时间调整函数中 作为替换后的参数
void Time_Adjust(u8 Tmp_HH,u8 Tmp_MM ,u8 Tmp_SS)
{
/* Wait until last write operation on RTC registers has finished */
RTC_WaitForLastTask();
/* Change the current time */
RTC_SetCounter(Tmp_HH*3600 + Tmp_MM*60 + Tmp_SS);
/* Wait until last write operation on RTC registers has finished */
RTC_WaitForLastTask();
}
接着定义参数TimeDisplay ,TimeDisplay是在原函数中定义的 我们找到文件中 Calendar文件中的main.c文件 找到该参数定义 将其复制过来就可以了
__IO uint32_t TimeDisplay