嵌入式蓝桥杯RTC最简单配置过程

本文详细介绍了在蓝桥杯竞赛中,如何进行STM32 RTC的配置,通过替换固件库中的示例代码,使用内部LSI晶振,并设置中断处理函数,实现RTC的时间显示和调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

嵌入式蓝桥杯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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值