(实验15)单片机,STM32F4学习笔记,代码讲解【RTC实时时钟实验】【正点原子】【原创】_rtc_writebackupregister-程序员宅基地

技术标签: 经验分享  学习  学校-32单片机  单片机  


其它文章链接,独家吐血整理

(实验3)单片机,STM32F4学习笔记,代码讲解【按键输入实验】【正点原子】【原创】
(实验4)单片机,STM32F4学习笔记,代码讲解【串口实验】【正点原子】【原创】
(实验5)单片机,STM32F4学习笔记,代码讲解【外部中断实验】【正点原子】【原创】
(实验6,实验7)单片机,STM32F4学习笔记,代码讲解【看门狗实验】【正点原子】【原创】
(实验8)单片机,STM32F4学习笔记,代码讲解【定时器实验】【正点原子】【原创】
(实验9)单片机,STM32F4学习笔记,代码讲解【PWM输出实验】【正点原子】【原创】
(实验10)单片机,STM32F4学习笔记,代码讲解【输入捕获实验】【正点原子】【原创】
(实验11)单片机,STM32F4学习笔记,代码讲解【电容触摸按键实验】【正点原子】【原创】
(实验12)单片机,STM32F4学习笔记,代码讲解【OLED显示实验】【正点原子】【原创】
(实验13)单片机,STM32F4学习笔记,代码讲解【TFTLCD彩屏显示实验】【正点原子】【原创】
(实验15)单片机,STM32F4学习笔记,代码讲解【RTC实时时钟实验】【正点原子】【原创】
(实验17)单片机,STM32F4学习笔记,代码讲解【待机唤醒实验】【正点原子】【原创】
(实验23)单片机,STM32F4学习笔记,代码讲解【DMA实验】【正点原子】【原创】
(实验25)单片机,STM32F4学习笔记,代码讲解【SPI实验】【正点原子】【原创】
(实验34)单片机,STM32F4学习笔记,代码讲解【FLASH模拟EEPROM实验】【正点原子】【原创】
(实验36)单片机,STM32F4学习笔记,代码讲解【外部SRAM实验】【正点原子】【原创】
(实验37)单片机,STM32F4学习笔记,代码讲解【内存管理实验】【正点原子】【原创】
(实验38)单片机,STM32F4学习笔记,代码讲解【SD卡实验】【正点原子】【原创】
(实验39)单片机,STM32F4学习笔记,代码讲解【FATFS实验】【正点原子】【原创】
(实验46)单片机,STM32F4学习笔记,代码讲解【FPU测试实验】【正点原子】【原创】
(实验47)单片机,STM32F4学习笔记,代码讲解【DSP-FFT测试实验】【正点原子】【原创】
(实验50)单片机,STM32F4学习笔记,代码讲解【串口IAP实验】【正点原子】【原创】
(实验50)单片机,STM32F4学习笔记,代码讲解【串口IAP实验-RTC时钟实验】【正点原子】【原创】
(实验55)单片机,STM32F4学习笔记,代码讲解【网络通信实验】【正点原子】【原创】

实验现象

本实验通过TFTLCD显示RTC时间,并可以通过usmart设置RTC时间/闹钟,从而调节时间,或设置RTC闹钟,以便大家验证RTC功能。

主程序

int main(void)
{
     

	RTC_TimeTypeDef RTC_TimeStruct;
	RTC_DateTypeDef RTC_DateStruct;

	u8 tbuf[40];
	u8 t=0;
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
	delay_init(168);      //初始化延时函数
	uart_init(115200);		//初始化串口波特率为115200
	
	usmart_dev.init(84); 	//初始化USMART	
	LED_Init();					  //初始化LED
 	LCD_Init();					  //初始化LCD
	My_RTC_Init();		 		//初始化RTC
 
	RTC_Set_WakeUp(RTC_WakeUpClock_CK_SPRE_16bits,0);		//配置WAKE UP中断,1秒钟中断一次
	
	POINT_COLOR=RED;
	LCD_ShowString(30,50,200,16,16,"Explorer STM32F4");	
	LCD_ShowString(30,70,200,16,16,"RTC TEST");	
	LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
	LCD_ShowString(30,110,200,16,16,"2014/5/5");	
  	while(1) 
	{
    		
		t++;
		if((t%10)==0)	//每100ms更新一次显示数据
		{
    
			RTC_GetTime(RTC_Format_BIN,&RTC_TimeStruct);
			
			sprintf((char*)tbuf,"Time:%02d:%02d:%02d",RTC_TimeStruct.RTC_Hours,RTC_TimeStruct.RTC_Minutes,RTC_TimeStruct.RTC_Seconds); 
			LCD_ShowString(30,140,210,16,16,tbuf);	
			
			RTC_GetDate(RTC_Format_BIN, &RTC_DateStruct);
			
			sprintf((char*)tbuf,"Date:20%02d-%02d-%02d",RTC_DateStruct.RTC_Year,RTC_DateStruct.RTC_Month,RTC_DateStruct.RTC_Date); 
			LCD_ShowString(30,160,210,16,16,tbuf);	
			sprintf((char*)tbuf,"Week:%d",RTC_DateStruct.RTC_WeekDay); 
			LCD_ShowString(30,180,210,16,16,tbuf);
		} 
		if((t%20)==0)LED0=!LED0;	//每200ms,翻转一次LED0 
		delay_ms(10);
	}	
}

RTC初始化程序

//RTC闹钟中断服务函数
void RTC_Alarm_IRQHandler(void)
{
        
	if(RTC_GetFlagStatus(RTC_FLAG_ALRAF)==SET)//ALARM A中断?
	{
    
		RTC_ClearFlag(RTC_FLAG_ALRAF);//清除中断标志
		printf("ALARM A!\r\n");
	}   
	EXTI_ClearITPendingBit(EXTI_Line17);	//清除中断线17的中断标志 											 
}

//RTC WAKE UP中断服务函数
void RTC_WKUP_IRQHandler(void)
{
        
	if(RTC_GetFlagStatus(RTC_FLAG_WUTF)==SET)//WK_UP中断?
	{
     
		RTC_ClearFlag(RTC_FLAG_WUTF);	//清除中断标志
		LED1=!LED1; 
	}   
	EXTI_ClearITPendingBit(EXTI_Line22);//清除中断线22的中断标志 								
}

代码讲解

//F4的RTC相比较F1来说,带有了日历功能,RTC还包含用于管理低功耗模式的自动唤醒单元
//系统复位后,会自动禁止访问访问后备寄存器和RTC,以防止对后备区域(BKP)的意外读写,所以要设置时间之前,先要取消备份区域(BKP)写保护
//RTC时钟有三种,我们选择LSE(外部低速震荡)==32.768Khz时钟晶振源
//日历时间和日期寄存器,可编程闹钟(闹钟A和B,我们用A),周期性自动唤醒(1s到36h,并且系统复位和低功耗模式不影响该定时唤醒)

// RTC_Set_Time(23,59,56,RTC_H12_AM); //设置时间
// RTC_Set_Date(14,5,5,1); //设置日期
//My_RTC_Init初始化中的这两个函数,是用于USMART操作,我们应该不需要
//不对不对,正常设置时间是用这两个函数,只放在这里是为了适用于USMART操作,我们不用就是了

//RTC_WriteBackupRegister(RTC_BKP_DR0,0x5050); //标记已经初始化过了
//这一句的存在,使得系统得到第一次设置的时间之后,下次就不会再修改了
//私以为,想要再次修改时间应该把0x5050修改其它值应该就可以了,然后再修改回来

//闹钟中断可以选择日期设置(0-31)和星期设置(一-天)
//闹钟中断连接在,外部中断线17
//RTC定时器周期唤醒中断连接在,外部中断线22
/*wksel: @ref RTC_Wakeup_Timer_Definitions
#define RTC_WakeUpClock_RTCCLK_Div16 ((uint32_t)0x00000000)
#define RTC_WakeUpClock_RTCCLK_Div8 ((uint32_t)0x00000001)
#define RTC_WakeUpClock_RTCCLK_Div4 ((uint32_t)0x00000002)
#define RTC_WakeUpClock_RTCCLK_Div2 ((uint32_t)0x00000003)
#define RTC_WakeUpClock_CK_SPRE_16bits ((uint32_t)0x00000004)
#define RTC_WakeUpClock_CK_SPRE_17bits ((uint32_t)0x00000006)
*/
//根据开发指南得知,RTC定时器中断我们可以选择2,4,8,16,分频,但是我们这里选择RTC_WakeUpClock_CK_SPRE_16bits分频,就是1s减一个数
//RTC_Set_WakeUp(RTC_WakeUpClock_CK_SPRE_16bits,0); //配置WAKE UP中断,1秒钟中断一次
//于是根据上面函数设置,可以得出,从0减到0就是1s,于是此函数定时器中断就是1s进入一次RTC_WKUP_IRQHandler中断,现象就是LED灯1s变化一次

//设置闹钟时间(按星期闹铃,24小时制)
//week:星期几(1~7) @ref RTC_Alarm_Definitions
//hour,min,sec:小时,分钟,秒钟
//void RTC_Set_AlarmA(u8 week,u8 hour,u8 min,u8 sec)
//这个函数用来设置每天的几时几分几秒闹钟中断,不关心星期几,注意此代码没有使用这个函数,如需要自己调用即可

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44639540/article/details/123957436

智能推荐

【Mo 人工智能技术博客】时间序列预测——DA-RNN模型_da rnn-程序员宅基地

文章浏览阅读8.1k次,点赞11次,收藏81次。时间序列预测——DA-RNN模型作者:梅昊铭1. 背景介绍传统的用于时间序列预测的非线性自回归模型(NRAX)很难捕捉到一段较长的时间内的数据间的时间相关性并选择相应的驱动数据来进行预测。本文将介绍一种基于 Seq2Seq 模型(Encoder-Decoder 模型)并结合 Attention 机制的时间序列预测方法。作者提出了一种双阶段的注意力机制循环神经网络模型(DA-RNN),能够很好..._da rnn

码分多址CDMA_共有四个站进行cdma-程序员宅基地

文章浏览阅读6.2k次,点赞9次,收藏47次。码分多路复用CDM又称码分多址CDMA,在计算题中出现只需要将码片序列进行正交即可正交结果为1,说明发送了1 正交结果为0,则说明没有发送数据 正交结果为-1,说明发送了0例题:1.共有4个站进行码分多址CDMA通信,4个站的码片序列为:A.(-1 -1 -1 +1 +1 -1 +1 +1)B(-1 -1 +1 -1 +1 +1 +1 -1)C.(-1 +1 -1 +1 +1 +1 -1 -1)D.(-1 +1 -1 -1 -1 -1 +1 -1)先收到码片序列:(-1_共有四个站进行cdma

如何将cocos2dx打包成exe_cocos-2dx打exe包-程序员宅基地

文章浏览阅读1.8k次。1.复制cocos2d-x-2.2文件下的Release.win32文件侠到桌面。2.将项目下的Resources里的资源复制到Release.win32文件里面。3.除exe文件、资源和dll文件外,其它文件全部删除以节省空间。4.打包即可。_cocos-2dx打exe包

CentOS 7 安装MySQL 以及遇到的坑及解决办法_contos安装mysql2023-05-11t05:20:04.108400z 0 [error]-程序员宅基地

文章浏览阅读573次。下载mysqlyum localinstall https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm安装yum install mysql-community-server -y启动MySQLservice mysqld start查看临时密码grep 'temporary password' /var/log/mysqld.log修改密码alter user user() identified by_contos安装mysql2023-05-11t05:20:04.108400z 0 [error] [my-010183] [server] fa

4.3.4 列表解析_4.3.4列表解析-程序员宅基地

文章浏览阅读99次。列表解析只需一行代码就可生成列表,将for循环语句和创建新元素代码合并并自动附加新元素,十分方便。示例代码:squares = [value for value in range(1,11)] # 将1-10的数字生成列表squaressquares2 = [value ** 2 for value in range(1,11)] # 将1-10的数的平方生成列表squares2打印结..._4.3.4列表解析

LSTM的备胎,用卷积处理时间序列——TCN与因果卷积(理论+Python实践)_tcn公式-程序员宅基地

文章浏览阅读2.5w次,点赞102次,收藏506次。什么是TCNTCN全称Temporal Convolutional Network,时序卷积网络,是在2018年提出的一个卷积模型,但是可以用来处理时间序列。卷积如何处理时间序列时间序列预测,最容易想到的就是那个马尔可夫模型:P(yk∣xk,xk−1,...,x1)P(y_k|x_k,x_{k-1},...,x_1)P(yk​∣xk​,xk−1​,...,x1​)就是计算某一个时刻的输出..._tcn公式

随便推点

Arduino_Core_STM32---pinMode()实现分析_arduino_core stm32-程序员宅基地

文章浏览阅读3k次。Arduino_Core_STM32—pinMode()实现分析pinMode()定义Arduino平台的易于使用性主要就体现在屏蔽的大量底层细节的实现,对于该函数来说也不例外。虽然该函数只有两个参数(arduino引脚号和模式),但这两个参数需要多层的映射才能转化为具体适合STM32芯片的配置信息,并调用底层接口完成配置。从下面源码中可以看出主要由两个函数来完成引脚模式配置的:digita..._arduino_core stm32

mp4视频文件压缩率大概是多大?_视频压缩率-程序员宅基地

文章浏览阅读1.1w次。上一篇介绍了压缩率的计算方法:一帧1920*1080的画面有多少比特,需要多大带宽观看是才不会卡顿?这次从行测记录仪中找了几个mp4格式的视频文件研究一下。先看下文件信息:根据上面文件信息,我们知道这是一个1920*1080分辨率3分钟时长录像。因为视频有声音,所以文件大小不全是图片压缩后的大小。压缩后视频大小 = 文件总大小 - 音频数据大小 = 142,540,800 byte- 31* 3 * 60 / 8 kb =141 826 560 B =138 502.5 K..._视频压缩率

gentoo下配置中文输入法(搜狗输入法)_gentoo中文输入法-程序员宅基地

文章浏览阅读6.8k次。其实本来感觉没有必要写这篇文章的,但是几个周前gentoo升级时搜狗输入法滚挂了,解决问题后,我感觉有些之前没有遇到的问题,有必要记下来,以方便以后自己查看。这里汇总一下最近安装fcitx输入法框架遇到的问题,一并把搜狗输入法的安装写进来。配置locale如果使用的是英文系统,系统区域(system locale)一定不能选C或者POSIX,个人建议选择en_US.utf8。对于openRC:使用e_gentoo中文输入法

从D触发器的角度说明建立和保持时间_触发器为什么没有d到q-程序员宅基地

文章浏览阅读425次。
 



从D触发器的角度说明建立和保持时间 上图是用与非门实现的D触发器的逻辑结构图,CP是时钟信号输入端,S和R分别是置位和清零信号,低有效; D是信号输入端,Q信号输出端;这里先说一下D触发器实现的原理:(假设S和R信号均为高,不进行置位和清零操作)CP=0时: G3和G4关闭,Q3和Q4输出为’1’。那么G5和G6打开..._触发器为什么没有d到q

几乎万能的安卓root方法,需adb能获取root权限(小白教小白)_安卓用bat打开usb调试-程序员宅基地

文章浏览阅读7.6w次,点赞13次,收藏137次。此文章部分摘自 bingoCoder2013的博客最近闲着没事,平常也喜欢搞搞机,搞机过程中遇到需要root权限是很麻烦的,各大root软件没有适配就无法root,现在有了一点收获,也是整理网上各大论坛出来的,用adb安装SuperSU。我的环境: 瑞芯微RK3368 / Android 7.1.2 / SuperSU-v2.82-2017052718221.必要前提ad..._安卓用bat打开usb调试

ListView的用法_listview用法-程序员宅基地

文章浏览阅读1.4w次,点赞30次,收藏229次。一、 ListView的使用<ListView>:用于展示大量数据的一种列表视图,通过上下滑动的方式将屏幕外的数据滚动到屏幕内。数据无法直接传递给ListView,需要适配器Adapter:作用是将各种数据以合适的形式展示到View上实例:Food.java:public class Food { private String name; private String describe; private int imageId;//图片id publ_listview用法

推荐文章

热门文章

相关标签