哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32F10x _RTC秒中斷

黃工的嵌入式技術(shù)圈 ? 來源:黃工的嵌入式技術(shù)圈 ? 2020-03-25 11:39 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Ⅰ、概述

RTC(Real Time Clock)是實(shí)時時鐘的意思,它其實(shí)和TIM有點(diǎn)類似,也是利用計(jì)數(shù)的原理,選擇RTC時鐘源,再進(jìn)行分頻,到達(dá)計(jì)數(shù)的目的。

該文主要講述關(guān)于RTC的秒中斷功能,這個功能類似SysTick系統(tǒng)滴答的功能。RTC秒中斷功能其實(shí)是每計(jì)數(shù)一次就中斷一次。注意,這里所說的秒中斷并非一定是一秒的時間,它是由RTC時鐘源和分頻值決定的“秒”的時間,當(dāng)然也是可以做到1秒鐘中斷一次。

本文章提供的實(shí)例工程,其實(shí)驗(yàn)效果是:

主函數(shù)間隔0.5秒LED變化一次;

秒中斷一次打印數(shù)據(jù)"RTC Sec...";

也就是LED變化一次,串口打印一次數(shù)據(jù)"RTC Sec..."

擴(kuò)展部分的功能RTC計(jì)數(shù):可以實(shí)現(xiàn)RTC鬧鐘,本文將提供實(shí)例工程源代碼供大家下載學(xué)習(xí)。

關(guān)于本文的更多詳情請往下看。

Ⅱ、實(shí)例工程下載

筆者針對于初學(xué)者提供的例程都是去掉了許多不必要的功能,精簡了官方的代碼,對初學(xué)者一看就明白,以簡單明了的工程供大家學(xué)習(xí)。

筆者提供的實(shí)例工程都是在板子上經(jīng)過多次測試并沒有問題才上傳至360云盤,歡迎下載測試、參照學(xué)習(xí)。

提供下載的軟件工程是STM32F103ZE的,但F1其他型號也適用(適用F1其他型號:關(guān)注微信,回復(fù)“修改型號”)。

STM32F10x_RTC鬧鐘實(shí)例源代碼工程:

https://yunpan.cn/cBbpu3gIGK38a 訪問密碼 05da

STM32F10x_RTC秒中斷實(shí)例源代碼工程:

https://yunpan.cn/cBbpPnhYbXR9x 訪問密碼 561f

STM32F1資料:

https://yunpan.cn/crBUdUGdYKam2 訪問密碼 ca90

Ⅲ、原理描述

以筆者個人學(xué)習(xí)經(jīng)歷來說,想要掌握其真正原理,最好還是查看參考手冊(現(xiàn)在有很多都翻譯為中文了),里面模塊的框圖,從框圖中大概就可以看到該模塊有些什么功能及其工作的原理。

RTC框圖:

從上面系統(tǒng)框圖來分析“RTC秒中斷”的原理:

1.RTC時鐘源,總共有三類:

RCC_RTCCLKSource_LSE

RCC_RTCCLKSource_LSI

RCC_RTCCLKSource_HSE_Div128

本文實(shí)例代碼是:RCC_RTCCLKConfig(RCC_RTCCLKSource_HSE_Div128);

使用“RCC_RTCCLKSource_HSE_Div128”作為時鐘源(高速時鐘源),也就是外部高速時鐘的128分頻,也就是每秒8M/128(62500)個脈沖;

當(dāng)然,我們也可以選擇另外兩個時鐘源,也就是使用低速時鐘源,一般應(yīng)用在RTC鬧鐘可RTC日歷等都使用低速時鐘源。

2.RTC分頻:

本文實(shí)例代碼是:RTC_SetPrescaler(62500);

這個值是和上面對應(yīng)的,因?yàn)槲覀冞@里是實(shí)現(xiàn)真正的1秒鐘中斷一次。

3.RTC中斷:

RTC中斷有三種:

RTC_IT_SEC秒中斷

RTC_IT_ALR鬧鐘中斷

RTC_IT_OW(計(jì)數(shù))溢出中斷

本文實(shí)例是:RTC_ITConfig(RTC_IT_SEC, ENABLE);

使能RTC_IT_SEC秒中斷。

再次強(qiáng)調(diào):

這里的“秒中斷”是概念上的秒中斷,它的中斷間隔時間是根據(jù)你選擇的時鐘源和分頻值決定的,并非真正的1秒鐘中斷一次。

我們可以試著將源代碼中的分頻值該62500的一半31250,可以看得出來,秒中斷的間隔時間為0.5秒(請自行修改實(shí)驗(yàn)測試)。

Ⅳ、源代碼分析

筆者以F1標(biāo)準(zhǔn)外設(shè)庫(同時也建議初學(xué)者使用官方的標(biāo)準(zhǔn)外設(shè)庫)為基礎(chǔ)建立的工程,主要以庫的方式來講述(若您的F1芯片與提供工程不一樣,可微信回復(fù)“修改型號”)。

下面將講述關(guān)于“RTC秒中斷”重要的、容易弄錯的幾點(diǎn):

1.RCC時鐘源


該函數(shù)位于bsp.c文件下面;

RCC是很多初學(xué)者,甚至已經(jīng)工作的朋友容易遺漏的地方,有很多朋友覺得它使用的外設(shè)不正常,很大部分是沒有配置RCC導(dǎo)致的。

重點(diǎn)注意:

A.外設(shè)RCC時鐘的配置要在其外設(shè)初始化的前面;

B.匹配對應(yīng)時鐘。

比如:RCC_APB2外設(shè)不要配置在RCC_APB1時鐘里面

【如:RCC_APB1PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);這樣能編譯通過,但這是錯誤的代碼】

2. RTC秒中斷配置


該函數(shù)位于rtc.c文件下面;

該函數(shù)請結(jié)合參考手冊(框圖和寄存器)理解。

注意4點(diǎn):

A.使能后備區(qū)域:PWR_BackupAccessCmd(ENABLE);

從系統(tǒng)框圖可以看見RTC有陰影部分,其實(shí)這部分就是后備區(qū)域。因此,需要使能,這也是為什么上面需要配置RCC時鐘的原因。

B.選擇RTC時鐘源:RCC_RTCCLKConfig(RCC_RTCCLKSource_HSE_Div128);

在原理描述中說了,RTC時鐘源有三種:

RCC_RTCCLKSource_LSE

RCC_RTCCLKSource_LSI

RCC_RTCCLKSource_HSE_Div128

可以在源代碼中查看其參數(shù),也是有3中可以選擇。

C.使能RTC鬧鐘中斷:RTC_ITConfig(RTC_IT_SEC,ENABLE);

RTC有三類中斷:

RTC_IT_SEC秒中斷

RTC_IT_ALR鬧鐘中斷

RTC_IT_OW(計(jì)數(shù))溢出中斷

我提供的拓展功能“RTC鬧鐘”就是使用鬧鐘中斷,可以下載實(shí)例工程查看源代碼。

D.RTC分頻:RTC_SetPrescaler(62500);

我們是為了得到真正的1秒鐘中斷一次,所以這里的值是62500= 8M/128,這樣才能剛好1秒中斷一次。

3. NVIC配置


該函數(shù)位于bsp.c文件下面;

我們要中斷,就需要配置NVIC(中斷控制器),為其分配優(yōu)先級。

很多人覺得自己的配置沒問題,但程序就是不進(jìn)入中斷,原因可能就在這里。因此,NVIC這里也是容易忽略的地方。

4. RTC中斷


該函數(shù)位于stm32f10x_it.c文件下面;

這里需要注意,RTC有三類中斷,但入口都是這個函數(shù),因此,需要在函數(shù)體里面分辨是哪一個中斷進(jìn)入了該函數(shù)。

注意1點(diǎn):

清除中斷標(biāo)志位:RTC_ClearITPendingBit(RTC_IT_SEC);

有的中斷標(biāo)志位清除方法可能有幾種方法,比如USART接收中斷,只要讀取接收值就可以清除(請看USART1_IRQHandler函數(shù))

可能有人覺得自己的程序老是字在中斷函數(shù)里面,原因可能就在于沒有清除中斷標(biāo)志位。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • STM32F10x
    +關(guān)注

    關(guān)注

    2

    文章

    82

    瀏覽量

    21401
  • RTC
    RTC
    +關(guān)注

    關(guān)注

    2

    文章

    665

    瀏覽量

    72216
  • 時鐘源
    +關(guān)注

    關(guān)注

    0

    文章

    112

    瀏覽量

    16813
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    STM32F042x4/STM32F042x6微控制器深度解析:特性、應(yīng)用與設(shè)計(jì)要點(diǎn)

    STM32F042x4/STM32F042x6微控制器深度解析:特性、應(yīng)用與設(shè)計(jì)要點(diǎn) 在嵌入式系統(tǒng)開發(fā)領(lǐng)域,微控制器的選擇至關(guān)重要,它直接影響著產(chǎn)品的性能、功能和成本。今天,我們就來深入探討一下意法
    的頭像 發(fā)表于 03-19 17:15 ?591次閱讀

    RTC工作原理

    到這些影子寄存器中? ?4、周期性自動喚醒?:RTC有一個16位的自動重載遞減計(jì)數(shù)器,可以產(chǎn)生周期性的喚醒中斷,通常定時一? ?5、可編程鬧鐘?:RTC有兩個可編程鬧鐘,當(dāng)鬧鐘觸發(fā)時
    發(fā)表于 11-28 07:14

    在CW32F030 MCU上設(shè)置外部中斷RTC喚醒條件的示例

    示例1:外部中斷喚醒 假設(shè)我們有一個按鍵連接到CW32F030的某個外部中斷引腳上,當(dāng)按鍵被按下時,MCU將從Sleep模式喚醒。 c #include \"cw32a030.h
    發(fā)表于 11-25 08:00

    RVMCU課堂「20」: 手把手教你玩轉(zhuǎn)RVSTAR—實(shí)時時鐘RTC

    主要模塊,一個是RTC預(yù)分頻模塊,模塊包含一個20位可編程預(yù)分頻器,該分頻器可以通過對RTC時鐘源分頻產(chǎn)生SC_CLK,如果RTC_INTEN寄存器中的
    發(fā)表于 10-29 08:10

    RTC出現(xiàn)3處警告rt_rtc_ops stm32_rtc_ops怎么解決?

    1.新版drv_rtc框架,有3處警告; stm32_rtc_get_secs,stm32_rtc_set_secs, stm32_rtc_get_timeval 警告如下
    發(fā)表于 09-22 06:57

    制作STM32F1開發(fā)板的BSP失敗的原因?

    我直接下載最新的master分支源碼(V5.2.1)后,將rt-thread\\bsp\\stm32\\libraries\\templates\\stm32f10x拷貝到rt-thread
    發(fā)表于 08-29 07:42

    STM32F10x參考手冊資料

    中文版參考手冊
    發(fā)表于 08-18 15:32 ?13次下載

    STM32F10XXX參考手冊

    電子發(fā)燒友網(wǎng)站提供《STM32F10XXX參考手冊.pdf》資料免費(fèi)下載
    發(fā)表于 08-08 15:19 ?22次下載

    求助,關(guān)于STM32F030進(jìn)入Stop模式后RTC喚醒問題求解

    STM32F030滿足條件后配置RTC喚醒 void RTC_AlarmConfig(void) { RTC_TimeTypeDef sTime = {0};
    發(fā)表于 07-23 06:59

    AT32的ERTC與RTC的區(qū)別

    AT32單片機(jī)系列中包含兩種實(shí)時時鐘(RTC)模塊:標(biāo)準(zhǔn)的RTC和增強(qiáng)型RTC(ERTC)。以下是兩者的區(qū)別: 功能豐富性 RTC :提供基本的計(jì)數(shù)功能,以
    發(fā)表于 07-11 10:48

    STM32F10xxx參考手冊

    STM32F1XX數(shù)據(jù)手冊中文版
    發(fā)表于 07-10 16:09 ?10次下載

    STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4編程手冊

    電子發(fā)燒友網(wǎng)站提供《STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4編程手冊.pdf》資料免費(fèi)下載
    發(fā)表于 06-06 17:06 ?17次下載

    STM32F40xxx和STM32f41xx flash編程手冊

    PM0081_STM32F40xxx and STM32F41xxx單片機(jī)編程手冊
    發(fā)表于 06-06 17:02 ?8次下載

    【RA-Eco-RA4M2開發(fā)板評測】RTC電子鐘

    、時、分、等,甚至可能包括星期幾和時區(qū)信息(盡管時區(qū)信息通常需要用戶手動設(shè)置)。通常配備電池供電系統(tǒng),以提供電源備份功能。這樣,即使主電源關(guān)閉,RTC也能繼續(xù)運(yùn)行并維護(hù)時間信息。 ??由于RTC通常
    發(fā)表于 05-08 17:07

    【道生物聯(lián)TKB-620開發(fā)板試用】定期休眠并發(fā)布數(shù)據(jù)

    來實(shí)現(xiàn)休眠后的喚醒。我配置代碼如下: #include \"stm32f10x.h\" // RTC初始化函數(shù) void RTC_Configuration(void
    發(fā)表于 04-29 07:29
    建水县| 崇文区| 宝山区| 岳西县| 惠安县| 定州市| 米林县| 都江堰市| 青海省| 奈曼旗| 玉溪市| 巴楚县| 崇阳县| 土默特左旗| 福州市| 晋城| 荔波县| 临安市| 冀州市| 中山市| 克什克腾旗| 叶城县| 嫩江县| 班戈县| 建始县| 灵武市| 普安县| 厦门市| 石阡县| 积石山| 沁阳市| 尼玛县| 高平市| 临朐县| 拜泉县| 南澳县| 南木林县| 兰溪市| 凤翔县| 怀柔区| 盖州市|