STM32H750 的實時時鐘是一個獨(dú)立的 BCD 定時器/計數(shù)器,且?guī)Я巳諝v功能,它提供一個日歷時鐘、兩個可編程鬧鐘中斷,以及一個具有中斷功能的周期性可編程喚醒標(biāo)志。
此外RTC 還有自動喚醒單元,RTC還可以補(bǔ)償閏年閏月等等,還有備份區(qū)域(BKP)寫保護(hù),這些這里不細(xì)說了。
RTC 的簡化框圖
時鐘和分頻
STM32H750 的 RTC 時鐘源(RTCCLK)通過時鐘控制器,可以從 LSE、LSI、HSE 時鐘三選一,如圖所示,有兩個預(yù)分頻器RTC_PRER
ck_spre 的時鐘可由如下計算公式計算:
Fck_spre = Frtcclk/[(PREDIV_S+1)*( PREDIV_A+1)]
圖中,ck_apre 也可作為 RTC 亞秒遞減計數(shù)器(RTC_SSR)的時鐘。
Fck_apre的計算公式如下:
Fck_apre=Frtcclk/( PREDIV_A+1)
當(dāng) RTC_SSR 寄存器遞減到 0 的時候,會使用 PREDIV_S 的值重新裝載 PREDIV_S,得到亞秒時間的精度是:1/256 秒,可以得到更加精確的時間數(shù)據(jù)。
STM32CubeIDE 配置
默認(rèn)情況下是如圖
一般情況下使用LSE,這里我們需要在RCC使能
然后在RTC中使能時鐘源,如果需要日歷鬧鐘功能的可以在這里也使能上。
公式如下:
RTC時鐘頻率 = RTC時鐘源 / ((Asynchronous Predivider value + 1) * (Synchronous Predivider value + 1))= 1Hz,也就是1秒
之后到時鐘配置里面可以看到已經(jīng)使能了
初始化
static void MX_RTC_Init(void)
{
/* USER CODE BEGIN RTC_Init 0 */
/* USER CODE END RTC_Init 0 */
/* USER CODE BEGIN RTC_Init 1 */
/* USER CODE END RTC_Init 1 */
/** Initialize RTC Only
*/
hrtc.Instance = RTC;
hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
hrtc.Init.AsynchPrediv = 127;
hrtc.Init.SynchPrediv = 255;
hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
hrtc.Init.OutPutRemap = RTC_OUTPUT_REMAP_NONE;
if (HAL_RTC_Init(&hrtc) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN RTC_Init 2 */
/* USER CODE END RTC_Init 2 */
}
可以看到outline里面有很多我們需要的函數(shù),那么自己擴(kuò)展就可以使用了
This function configures the hardware resources used in this example
void HAL_RTC_MspInit(RTC_HandleTypeDef* hrtc)
{
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
if(hrtc->Instance==RTC)
{
/* USER CODE BEGIN RTC_MspInit 0 */
/* USER CODE END RTC_MspInit 0 */
/** Initializes the peripherals clock
*/
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC;
PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
{
Error_Handler();
}
/* Peripheral clock enable */
__HAL_RCC_RTC_ENABLE();
/* USER CODE BEGIN RTC_MspInit 1 */
/* USER CODE END RTC_MspInit 1 */
}
}
最后,可以按需定制自己的實現(xiàn)方式,RTC是特別實用的一個模塊了。
-
STM32
+關(guān)注
關(guān)注
2293文章
11031瀏覽量
364266 -
計數(shù)器
+關(guān)注
關(guān)注
32文章
2291瀏覽量
96334 -
定時器
+關(guān)注
關(guān)注
23文章
3298瀏覽量
118664
發(fā)布評論請先 登錄
RTC簡介
stm32的RTC時鐘源有三個方式
STM32_HAL庫開發(fā)中RTC的使用
RTC實時時鐘簡介
stm32時鐘硬件設(shè)計簡介
STM32CubeMX RTC簡介
STM32單片機(jī)RTC模塊的分析
STM32開發(fā) -- RTC詳解

STM32CubeMX系列|RTC實時時鐘

評論