日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

关于在Arduino下STM32编程——RTC函数解析

發(fā)布時間:2023/12/13 综合教程 55 生活家
生活随笔 收集整理的這篇文章主要介紹了 关于在Arduino下STM32编程——RTC函数解析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

注意:相關RTC基礎知識這里不提!

該庫頭文件引用:

#include<RTClock.h>

該庫所在Arduino位置:

初始化RTC相關時鐘

Arduino版的庫里初始化配置PWR時鐘、初始化配置備份寄存器時鐘、復位備份寄存器(RTC時鐘需要用到備份寄存器相關東西)

官方老標準庫里也是一樣的:

設置寄存器RCC_APB1ENR的PWREN和BKPEN位打開電源和后備時鐘。

使能寫備份寄存器

在Arduino版庫里,寫備份寄存器使能是操作電源相關里的CR寄存器的DBP位置1

在老版標準庫里也是這樣。

電源后備寄存器(PWR_CR)的DBP位使能對后備寄存器和RTC的訪問。

失能寫備份寄存器

那么不難理解,失能寫備份寄存器,就是將DBP位置0了。

設置RTC時鐘

庫代碼截圖里可以看到,如果不寫入?yún)?shù),那么就默認使用 RTClock(RTCSEL_HSE); 外部高速時鐘來作為RTC時鐘源。

我的代碼中,選擇了LSE,也就是外部低速時鐘來作為時鐘源。

rtc_init();函數(shù)里實現(xiàn)了設置和打開相應時鐘。

寫入RTC時間

time_t 類型就是 unsigned long類型。

追蹤rtc_set_count();函數(shù):

該函數(shù)所在文件:

等待最近一次RTC寄存器同步完成

等待最近一次對RTC寫操作完成

RTC進入配置模式的源碼:

等待寫操作完成,配置RTC的CRL寄存器的CNF位。

因為紅線的話,所以上面的rtc_set_count函數(shù)才會有進入配置模式和退出配置模式的配套語句。

讀出RTC時間

源碼如下:

定位到rtc_get_count();函數(shù):

很簡單,就是把RTC計數(shù)寄存器的值讀出來合并返回。

創(chuàng)建RTC鬧鐘中斷

RTC有幾種鬧鐘,一種是秒鬧鐘,每過一秒進入一次;一種就是對于時間的對比的鬧鐘,到了時間點就產生一次鬧鐘。

下面是設置時間對比的鬧鐘源碼:

追蹤到rtc_set_alarm()函數(shù):

前三句話和配置模式老生常談。

后面是設置鬧鐘寄存器的值。

下面追蹤到rtc_attach_interrupt函數(shù):

使能鬧鐘中斷,switch里是第四個case。再使能鬧鐘優(yōu)先級。

設置RTC鬧鐘時間

顧名思義,可以修改RTC的鬧鐘時間。注意:該函數(shù)是修改,并不會創(chuàng)建鬧鐘中斷。

解除RTC鬧鐘中斷

失能RTC鬧鐘中斷,并將中斷處理函數(shù)給注銷。

總結

以上是生活随笔為你收集整理的关于在Arduino下STM32编程——RTC函数解析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。