STM32CubeMX:RTC
2016-08-03 15:00
435 查看
芯片:STM32F103C8T6
应用管脚:
USART1、RCC、RTC
配置界面
![](http://img.blog.csdn.net/20160803150200868?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
修改时钟源为LSE
![](http://img.blog.csdn.net/20160803150233009?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
配置RTC,可设置时间及日期
![](http://img.blog.csdn.net/20160803150301895?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
应用函数
设置完成后,重启依旧会恢复到原初始化状态,修改MX_RTC_Init函数,将设置日期及时间注释掉,可解决掉电恢复初始化问题。但掉电日期依旧恢复默认,不知为何原因,后期实际用途中再深入使用。
应用管脚:
USART1、RCC、RTC
配置界面
修改时钟源为LSE
配置RTC,可设置时间及日期
应用函数
HAL_RTC_GetTime(&hrtc, &stimestructure, RTC_FORMAT_BIN); HAL_RTC_GetDate(&hrtc, &sdatestructure, RTC_FORMAT_BIN); printf("%02d/%02d/%02d\r\n",2000 + sdatestructure.Year, sdatestructure.Month, sdatestructure.Date); printf("%02d:%02d:%02d\r\n",stimestructure.Hours, stimestructure.Minutes, stimestructure.Seconds);设置时间
stimestructure.Hours=huart1_RxBuffer[1]; stimestructure.Minutes=huart1_RxBuffer[2]; stimestructure.Seconds=huart1_RxBuffer[3]; if (HAL_RTC_SetTime(&hrtc, &stimestructure, RTC_FORMAT_BCD) != HAL_OK) { Error_Handler(); }设置日期
sdatestructure.Year=huart1_RxBuffer[1]; sdatestructure.Month=huart1_RxBuffer[2]; sdatestructure.Date=huart1_RxBuffer[3]; sdatestructure.WeekDay=huart1_RxBuffer[4]; if (HAL_RTC_SetDate(&hrtc, &sdatestructure, RTC_FORMAT_BCD) != HAL_OK) { Error_Handler(); }注意:
设置完成后,重启依旧会恢复到原初始化状态,修改MX_RTC_Init函数,将设置日期及时间注释掉,可解决掉电恢复初始化问题。但掉电日期依旧恢复默认,不知为何原因,后期实际用途中再深入使用。
/* RTC init function */ static void MX_RTC_Init(void) { // RTC_TimeTypeDef sTime; // RTC_DateTypeDef DateToUpdate; /**Initialize RTC and set the Time and Date */ hrtc.Instance = RTC; hrtc.Init.AsynchPrediv = RTC_AUTO_1_SECOND; hrtc.Init.OutPut = RTC_OUTPUTSOURCE_NONE; if (HAL_RTC_Init(&hrtc) != HAL_OK) { Error_Handler(); } // sTime.Hours = 0x1; // sTime.Minutes = 0x0; // sTime.Seconds = 0x0; // if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BCD) != HAL_OK) // { // Error_Handler(); // } // DateToUpdate.WeekDay = RTC_WEEKDAY_MONDAY; // DateToUpdate.Month = RTC_MONTH_JANUARY; // DateToUpdate.Date = 0x1; // DateToUpdate.Year = 0x0; // if (HAL_RTC_SetDate(&hrtc, &DateToUpdate, RTC_FORMAT_BCD) != HAL_OK) // { // Error_Handler(); // } }
相关文章推荐
- STM32CubeMX(stm32F030C8T6) 之RTC闹钟唤醒停机模式-STM32开发实战 (2)
- STM32CubeMx之RTC
- STM32CubeMX:RTC(万年历方式)
- [笔记分享] [RTC] RTC Hardware介绍
- 记录一个stm32cubemx的bug
- RTC在大规模直播场景下的技术分析
- 使用HAL库、STM32CubeMX和Keil 5开发入门教程(一):点亮一盏LED灯(NUCLEO-F411RE)
- baseRTC: 提取编译webRTC的base库
- stm32 RTC时钟配置
- STM32CubeMX 4.23.0的一些问题
- STM32Cubemx编程及Jlink下载
- RTC时间更新
- STM32F4 RTC的使用
- STM32CubeMX学习教程之五:PWM实现呼吸灯效果
- [RTC]如何得到Interop.RTCCore.dll
- C++反汇编揭秘2 – VC编译器的运行时错误检查(RTC)
- RTC的狗蛋问题
- C++反汇编揭秘2 – VC编译器的运行时错误检查(RTC) - [C/C++]
- 手把手教你定制自己的RTC
- RTC 2.0 vs VSTS 【转载】