stm32f103c8t6 内部RTC时间获取函数
时间: 2023-10-05 07:06:21 浏览: 161
在STM32F103C8T6芯片中,RTC时间可以通过以下函数来获取:
```c
#include "stm32f1xx_hal.h"
RTC_HandleTypeDef hrtc;
void get_RTC_time(RTC_TimeTypeDef *sTime)
{
HAL_RTC_GetTime(&hrtc, sTime, RTC_FORMAT_BIN);
}
```
其中,RTC_TimeTypeDef是一个结构体,用于存储RTC时间信息,包括小时、分钟、秒钟和时钟格式。hrtc是一个RTC_HandleTypeDef类型的变量,它是HAL库中RTC模块的句柄。通过调用HAL_RTC_GetTime函数,可以将当前RTC时间的信息存储在sTime结构体中。
需要注意的是,在调用这个函数之前,需要先初始化RTC模块,并确保RTC时钟已经开启。通常可以通过以下方式来初始化RTC:
```c
void RTC_Init(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
/** Initializes the RCC Oscillators according to the specified parameters
* in the RCC_OscInitTypeDef structure.
*/
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSE;
RCC_OscInitStruct.LSEState = RCC_LSE_ON;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
/** Initializes the RTC peripheral */
hrtc.Instance = RTC;
hrtc.Init.AsynchPrediv = 127;
hrtc.Init.SynchPrediv = 255;
hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
if (HAL_RTC_Init(&hrtc) != HAL_OK)
{
Error_Handler();
}
/** Initializes the RTC clock source */
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC;
PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
{
Error_Handler();
}
/** Enable the RTC Clock */
__HAL_RCC_RTC_ENABLE();
}
```
这个函数中,首先使用LSE作为RTC的时钟源,然后配置RTC模块的一些参数,最后使能RTC时钟。在调用RTC_Init函数之后,就可以通过上面的get_RTC_time函数来获取RTC的时间信息了。
阅读全文