簡介
rtc (real time clock):實時時鐘
主要特性void rcc_rtcclkconfig(uint32_t clksource);//時鐘源選擇
void rcc_rtcclkcmd(functionalstate newstate)//時鐘使能
errorstatus rtc_init(rtc_inittypedef* rtc_initstruct);
typedef struct
rtc_inittypedef
//設定時間
errorstatus rtc_settime(uint32_t rtc_format, rtc_timetypedef* rtc_timestruct);
//獲取時間
void rtc_gettime(uint32_t rtc_format, rtc_timetypedef* rtc_timestruct);
//設定日期
errorstatus rtc_setdate(uint32_t rtc_format, rtc_datetypedef* rtc_datestruct);
//獲取日期
void rtc_getdate(uint32_t rtc_format, rtc_datetypedef* rtc_datestruct);
//獲取到亞秒的資訊
uint32_t rtc_getsubsecond(void);
//禁止或使能rtc鬧鐘。
errorstatus rtc_alarmcmd(uint32_t rtc_alarm, functionalstate newstate);
//rtc鬧鐘時間配置。
void rtc_setalarm(uint32_t rtc_format, uint32_t rtc_alarm, rtc_alarmtypedef* rtc_alarmstruct);
//獲取rtc鬧鐘的時間配置
void rtc_getalarm(uint32_t rtc_format, uint32_t rtc_alarm, rtc_alarmtypedef* rtc_alarmstruct);
//功能配置rtc alarma/b的亞秒
void rtc_alarmsubsecondconfig(uint32_t rtc_alarm, uint32_t rtc_alarmsubsecondvalue, uint32_t rtc_alarmsubsecondmask);
//得到rtc的亞秒時間。
uint32_t rtc_getalarmsubsecond(uint32_t rtc_alarm);
//配置rtc喚醒時鐘源
void rtc_wakeupclockconfig(uint32_t rtc_wakeupclock);
//配置rtc喚醒計數
void rtc_setwakeupcounter(uint32_t rtc_wakeupcounter);
//得到喚醒定時器的計數值
uint32_t rtc_getwakeupcounter(void);
//關閉wake up
rtc_wakeupcmd(disable);
//使能或禁止rtc中斷
void rtc_itconfig(uint32_t rtc_it, functionalstate newstate);
//查詢rtc標誌,主要用於非中斷函式
flagstatus rtc_getflagstatus(uint32_t rtc_flag);
//清除rtc標誌,主要用於非中斷函式
void rtc_clearflag(uint32_t rtc_flag);
//查詢rtc中斷標誌
itstatus rtc_getitstatus(uint32_t rtc_it);
//清除rtc中斷標誌
void rtc_clearitpendingbit(uint32_t rtc_it);
//取消寫保護
void rtc_writeprotectioncmd(functionalstate newstate);
//進入配置模式,rtc_isr_initf位設定為1
errorstatus rtc_enterinitmode(void);
//退出初始化模式。
void rtc_exitinitmode(void)
//從備份資料暫存器讀出資料。
uint32_t rtc_readbackupregister(uint32_t rtc_bkp_dr);
//寫資料到rtc備份資料暫存器
void rtc_writebackupregister(uint32_t rtc_bkp_dr, uint32_t data);
//使能或禁止rtc中斷
void rtc_itconfig(uint32_t rtc_it, functionalstate newstate);
#define rtc_bkp_vale 0x2021
void rtc_init(void)
}
所有 rtc 中斷均與 exti 控制器相連。要使能 rtc 鬧鐘中斷,需按照以下順序操作:
將 exti 線 17 配置為中斷模式並將其使能,然後選擇上公升沿有效。配置 nvic 中的 rtc_alarm irq 通道並將其使能。
配置 rtc 以生成rtc 鬧鐘(鬧鐘 a 或鬧鐘 b)。
①:rtc已經初始化好相關引數。
②:關閉鬧鐘:rtc_alarmcmd(rtc_alarm_a,disable);
③:配置鬧鐘引數:rtc_setalarm();3
④:開啟鬧鐘:rtc_alarmcmd(rtc_alarm_a,eable);
⑤:開啟配置鬧鐘中斷:
rtc_itconfig();
exti_init();
nvic_init();
⑥:編寫中斷服務函式:rtc_alarm_irqhandler();
//鬧鐘a
void rtc_alarm_ainit(void)
void rtc_alarm_irqhandler(void)
//清空標誌位
exti_clearitpendingbit(exti_line17);
}}
//鬧鐘b
void rtc_alarm_binit(void)
main.c
int main(void)
return 0;
}
errorstatus rtc_settime(uint32_t rtc_format, rtc_timetypedef* rtc_timestruct);
函式功能:時間設定
uint32_t rtc_format:儲存格式
rtc_format_bin:二進位制儲存
rtc_format_bcd:bcd碼格式
typedef struct
rtc_timetypedef;
↩︎errorstatus rtc_setdate(uint32_t rtc_format, rtc_datetypedef* rtc_datestruct)
函式功能:日期設定
uint32_t rtc_format:儲存格式
rtc_format_bin:二進位制儲存
typedef struct
rtc_datetypedef;
↩︎void rtc_setalarm(uint32_t rtc_format, uint32_t rtc_alarm, rtc_alarmtypedef* rtc_alarmstruct);
函式功能:設定鬧鐘
uint32_t rtc_format:儲存格式
rtc_format_bin:二進位制儲存
rtc_format_bcd:bcd碼格式
uint32_t rtc_alarm:選擇哪個鬧鐘
typedef struct
rtc_alarmtypedef;
typedef struct
rtc_timetypedef;
複習stm32中關於RTC時鐘知識
在做智慧型手環時候使用到了關於rtc時鐘的,今天我們來複習一下關於他的知識點。文章中我是參考的有stm32f411的中文參考手冊,需要的話我會上傳這個pdf版。養成查資料的好習慣 stm32之rtc實時時鐘 這個裡面比較詳細,還新增了例程。stm32 rtc實時時鐘這個鏈結裡面詳細講述rtc中的主要...
STM32應用 第3節 永不消逝的時鐘 RTC
每乙個複雜的專案,都包括了許多基礎內容。每乙個複雜的任務,都是通過一系列簡單的分解動作組裝而成。rtc就是諸多分解動作中重要的一環。在物聯網的各類裝置中,許多都需要利用rtc,才能為資料提供準確的定時。rtc初始化根據bkp readbackupregister讀數值進行判斷,如果讀數值不等於bkp...
STM32系統時鐘
1 參考資料 stm32f1開發指南 庫函式版本 4.3小節 時鐘系統 stm32中文參考手冊v10 第六章 復位和時鐘控制 rcc 2 時鐘系統知識總結 1 stm32有5個時鐘源 hsi hse lsi lse pll hsi是高速內部時鐘,rc振盪器,頻率為8mhz,精度不高 hse是高速外部...