STMF4学习笔记RTC(天空星)

        前言:本篇笔记参考嘉立创文档,连接放在最后

#RTC相关概念定义

        Real-Time Clock  缩写  RTC 翻译  实时时钟,是单片机片内外设的一种,作用于提供准确的时间还有日期,这个外设有独立的电源,当单片机停止供电的时候,仍能保持准确的时间。

       RTC由晶振还有计数器组成,晶振产生一个固定频率的信号,计数器对这些信号进行计数,RTC本质上就是一个1S计数器,由此换算出时间,除此之外RTC是一个独立的BCD定时器/计数器,F4的RTC提供一个日历时钟,两个闹钟中断,一个可编程唤醒标志。

#RTC外设电源的选择
RTC电源供电选择有 VDDBAT,如果选择VDD进行供电,在掉电之后,数据不会进行保存,如果使用BAT,也就是纽扣电池进行供电,数据将备份在 备份寄存器中,系统复位,或者系统从待机模式唤醒时,RTC设置与时钟都保持不变。
#RTC常用的功能介绍

时间和日期表示:RTC可以表示时间日期,他可以跟踪年,月,日,分钟和秒的信息

闹钟功能:通过设置时间还有日期触发闹钟发生中断。

定时器功能:RTC支持定时器功能,可以实现周期性的定时触发。

外部中断触发:可以通过外部中断输入来触发中断事件。

        总结:RTC 实时时钟,主要应用就是在掉电或者复位之后,可以准确的提供时间。(使用BAT电源)

#RTC相关代码表示

  RTC模块是在后备区域,但是在系统复位或者从待机模式唤醒后,会自动禁止访问后备寄存器和RTC,防止对后备区域的意外操作,所以在配置RTC的时候,要取消备份区域的写保护

使能对RTC访问:使能对后备寄存器和RTC的访问权限。

设置RTC时钟源:选择外部时钟源和分频系数。

配置RTC结构体:配置RTC结构体基本结构

关闭RTC配置模式:配置结束关闭RTC配置模式

void  RTC_ClockInit(void)
{RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);//开启时钟PWR_BackupAccessCmd(ENABLE);//使能备份寄存器RCC_LSICmd(ENABLE);//开启LSI外置低俗晶振RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);//配置RTC时钟来源RCC_RTCCLKCmd(ENABLE);RTC_WaitForSynchro();if(RTC_ReadBackupRegister(RTC_BKP_DR0) != 0x2002)   //一个变量,看看RTC初始化没{printf("Set Time and Date.....\r\n");Rtc_TimerConfig();printf("Set End!!\r\n");}PWR_BackupAccessCmd(DISABLE); // 关闭备份寄存器}
void Rtc_TimerConfig(void)
{RTC_WriteProtectionCmd(DISABLE);//关闭系统自动的读写保护RTC_InitTypeDef RTC_InitStruct;RTC_InitStruct.RTC_AsynchPrediv = RTC_HourFormat_24;RTC_InitStruct.RTC_HourFormat =(uint32_t)0x7F;RTC_InitStruct.RTC_SynchPrediv =(uint32_t)0xFF; RTC_Init(&RTC_InitStruct);RTC_TimeTypeDef RTC_TimerStruct;RTC_TimerStruct.RTC_H12 = RTC_H12_AM;RTC_TimerStruct.RTC_Hours = 18;RTC_TimerStruct.RTC_Minutes = 10;RTC_TimerStruct.RTC_Seconds = 1;RTC_SetTime(RTC_Format_BIN,&RTC_TimerStruct);RTC_DateTypeDef  RTC_DataStruct;RTC_DataStruct.RTC_Date = 11; RTC_DataStruct.RTC_Month = RTC_Month_March ;RTC_DataStruct.RTC_WeekDay = 1;RTC_DataStruct.RTC_Year = 24;RTC_SetDate(RTC_Format_BIN,&RTC_DataStruct);RTC_EnterInitMode();//关闭RTC编辑模式RTC_WriteBackupRegister(RTC_BKP_DR0,0x2002);RTC_WriteProtectionCmd(ENABLE);}
void RtcShowTime(void)
{// 时间结构体RTC_TimeTypeDef RTC_TimeStructure;// 日期结构体RTC_DateTypeDef RTC_DateStructure;        // 获取RTC日期RTC_GetTime(RTC_Format_BIN, &RTC_TimeStructure);  // 获取RTC时间RTC_GetDate(RTC_Format_BIN, &RTC_DateStructure);//将获取到的RTC时间BIN二进制再通过串口输出printf("Current time: %d:%d:%d  ", \RTC_TimeStructure.RTC_Hours,  RTC_TimeStructure.RTC_Minutes, RTC_TimeStructure.RTC_Seconds);printf("%d-%d-%d\n\r", \RTC_DateStructure.RTC_Year, RTC_DateStructure.RTC_Month, RTC_DateStructure.RTC_Date);
}
int BcdToDecimal(int bcd) 
{int decimal = 0;int temp = 1;int number = 0;if( bcd >= 0x0A ) // 如果大于或等于10{while(bcd > 0) {number = bcd % 16;decimal += number * temp;temp *= 10;bcd /= 16;}return decimal;}return bcd;}
int main(void)
{board_init();uart1_init(115200U);printf("RTC Init Start.....\r\n");RTC_ClockInit(); // RTC 初始化printf("RTC Init Successful!!\r\n");while(1){//获取RTC时间并通过串口输出RtcShowTime();  delay_ms(1000);}}
#相关实验现象

     

                                        欢迎指正,希望对你,有所帮助!!!

‍​‍​‍​​​‍⁠‍​​​⁠​​​‌​​⁠​​⁠‍​‬​​‍‬​‬‍​‍​​​‬⁠‌​⁠【立创·天空星STM32F407VET6】入门手册 - 飞书云文档 (feishu.cn)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/42164.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux开发讲课33---线程实现与线程控制步骤简析

线程概述 进程是系统中程序执行和资源分配的基本单位。 每个进程都拥有自己的数据段、代码段和堆栈段,这就造成了进程在进行切换等操作时都需要有比较负责的上下文切换等动作。为了进一步减少处理机的空转时间支持多处理器和减少上下文切换开销,进程在演…

类和对象-C++运算符重载-递增运算符重载

递增运算符重载 #include<bits/stdc.h> using namespace std; //重载递增运算符//自定义整型 class MyInteger {friend ostream & operator<<(ostream & cout,MyInteger myint); public:MyInteger(){m_Num 0;}//重载前置运算符MyInteger& operator()…

隐藏的h1写法(以图换字)

所谓以图换字&#xff0c;即直接使用一张图片或背景&#xff0c;没有文字。我们知道&#xff0c;蜘蛛爬取时是不会获取图片上的内容的&#xff0c;但是如果是添加上文字&#xff0c;即便使用一些字体&#xff0c;也可能达不到图片的显示效果。如何将用户体验与SEO优化相兼容呢&…

Linux CentOs7系统scl镜像源失效问题

1. 问题描述 成功使用下面命令安装scl源后 [rootiZwz946ibli8ikuyqgtc58Z ~]# yum install centos-release-scl-rh尝试使用scl安装redis5&#xff0c;报了下面错误&#xff1a; [rootiZwz946ibli8ikuyqgtc58Z ~]# yum install rh-redis5-redis Loaded plugins: fastestmirro…

移动硬盘“需格式化”危机:应对策略与数据拯救指南

移动硬盘困境&#xff1a;突如其来的“格式化”提示 在日常的数据存储与传输过程中&#xff0c;移动硬盘作为便携且容量可观的存储媒介&#xff0c;深受用户青睐。然而&#xff0c;当这块存储“小能手”突然弹出“需要格式化”的警告时&#xff0c;无疑给用户的数据安全敲响了…

软考中级数据库系统工程师备考经验分享

前几天软考成绩出了&#xff0c;赶紧查询了一下发现自己顺利通过啦&#xff08;上午63&#xff0c;下午67&#xff0c;开心&#xff09;&#xff0c;因此本文记录一下我的备考经验分享给大家。因为工作中项目管理类的知识没有系统学习过&#xff0c;本来想直接报名软考高级证书…

Unity3D 场景树与组件化开发详解

Unity3D是一款功能强大的游戏开发引擎&#xff0c;其独特的场景树和组件化开发模式为开发者提供了高效、灵活的游戏开发体验。本文将详细解析Unity3D中的场景树与组件化开发模式&#xff0c;并给出相应的技术详解和代码实现。 对惹&#xff0c;这里有一个游戏开发交流小组&…

Symfony框架深度解析:构建高效PHP应用的强大基石

引言 在PHP的广阔生态系统中&#xff0c;Symfony框架以其强大的功能、灵活的架构和丰富的社区资源&#xff0c;成为了构建复杂且高性能Web应用的首选之一。自2005年诞生以来&#xff0c;Symfony不断演进&#xff0c;为开发者提供了一套完整且易于扩展的工具集&#xff0c;旨在…

【IO】文件操作

&#x1f970;&#x1f970;&#x1f970;来都来了&#xff0c;不妨点个关注叭&#xff01; &#x1f449;博客主页&#xff1a;欢迎各位大佬!&#x1f448; 文章目录 1. 文件1.1 认识文件1.2 分清操作的是内存还是硬盘1.3 路径1.3.1 目录结构1.3.2 相对和绝对路径 1.4 文本文件…

速盾:防护攻击CDN

随着互联网的快速发展&#xff0c;网络安全问题也日益突出。其中&#xff0c;DDoS&#xff08;分布式拒绝服务攻击&#xff09;是一种常见的网络安全威胁&#xff0c;能够对目标服务器造成严重影响&#xff0c;使其无法正常运行。为了应对这种威胁&#xff0c;许多企业和组织开…

WIN32核心编程 - 内存管理 内存页面

公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 目录 VirtualAlloc - VirtualFree VirtualAllocEx - VirtualFreeEx VirtualLock(Ex) - VirtualUnlock(Ex) VirtualQuery(Ex) Process Memory Information VirtualProtect(Ex) Heap - GetProce…

大数据Spark 面经

1: Spark 整体架构 Spark 是新一代的大数据处理引擎&#xff0c;支持批处理和流处理&#xff0c;也还支持各种机器学习和图计算&#xff0c;它就是一个Master-worker 架构&#xff0c;所以整个的架构就如下所示&#xff1a; 2: Spark 任务提交命令 一般我们使用shell 命令提…

Flutter-实现双向PK进度条

如何实现一个双向PK进度条 在Flutter应用中&#xff0c;进度条是一个非常常见的组件。而双向PK进度条则能够展示两个对立的数值&#xff0c;如对战中的双方得分对比等。本文将介绍如何实现一个具有双向PK效果的进度条&#xff0c;并支持竖直和斜角两种过渡效果。 1. 需求 我…

FMEA在大型光伏电站安全生产管理中的应用

一、FMEA概述 FMEA&#xff08;Failure Modes and Effects Analysis&#xff09;即失效模式和影响分析&#xff0c;是一种用于识别和分析产品或过程中潜在故障模式及其影响的方法。它通过对产品或过程中可能出现的故障模式进行系统性地梳理和分析&#xff0c;评估其可能的影响…

配置Nginx来代理多个Docker微服务组成统一的后台服务

配置Nginx来代理多个Docker微服务组成统一的后台服务可以通过以下步骤完成&#xff1a; 假设情境和准备工作 假设你有多个 Docker 容器&#xff0c;每个容器运行一个微服务&#xff0c;例如&#xff1a; 微服务1: 可以通过 http://localhost:8001 访问微服务2: 可以通过 htt…

并查集[讲课留档]

并查集&#xff08;DSU&#xff09; 一些可以实现合并和 查询的 集合。 简洁优雅的树型数据结构&#xff0c;主要用于解决一些元素分组的问题。可以管理一系列不相交的集合&#xff0c;并支持两种操作&#xff1a; 合并&#xff08;join&#xff09;&#xff1a;把两个不相交…

通过SDK使用百度智能云的图像生成模型SDXL

登录进入百度智能云控制台&#xff0c;在模型广场按照图像生成类别进行筛选&#xff0c;可以找到Stable-Diffusion-XL模型。点击Stable-Diffusion-XL模型的API文档后在弹出的新页面下拉可以找到SDK调用的说明。 import qianfandef sdxl(file: str, prompt: str, steps: int 2…

MySQL——PreparedStatement对象

PreparedStatement可以防止SQL注入&#xff0c;效率更高。 1. 增 public class TestInsert {public static void main(String[] args) throws SQLException {Connection conn null;PreparedStatement ps null;ResultSet rs null;try {conn jdbcUtils.getConnection();// …

矩阵分析与应用1-矩阵代数基础

矩阵分析与应用1-矩阵代数基础 1 矩阵的基本运算2 矩阵的初等变换3 向量空间、线性映射与Hilbert空间4 内积与范数5 随机向量6 矩阵的性能指标7 逆矩阵与伪逆矩阵8 Moore-Penrose逆矩阵9 矩阵的直和与Hadamard积10 Kronecker积与Khatri-Rao积11 向量化与矩阵化12 稀疏表示与压缩…

金丝键合强度测试仪试验条件要求:键合拉脱/引线拉力/剪切力等

金丝键合强度测试仪是测量引线键合强度&#xff0c;评估键合强度分布或测定键合强度是否符合有关的订购文件的要求。键合强度试验机可应用于采用低温焊、热压焊、超声焊或有关技术键合的、具有内引线的器件封装内部的引线-芯片键合、引线-基板键合或内引线一封装引线键合&#…