91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

STM32F10x _RTC秒中斷

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

掃碼添加小助手

加入工程師交流群

Ⅰ、概述

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

該文主要講述關(guān)于RTC的秒中斷功能,這個(gè)功能類似SysTick系統(tǒng)滴答的功能。RTC秒中斷功能其實(shí)是每計(jì)數(shù)一次就中斷一次。注意,這里所說的秒中斷并非一定是一秒的時(shí)間,它是由RTC時(shí)鐘源和分頻值決定的“秒”的時(shí)間,當(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)于本文的更多詳情請(qǐng)往下看。

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

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

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

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

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

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

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

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

STM32F1資料:

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

Ⅲ、原理描述

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

RTC框圖:

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

1.RTC時(shí)鐘源,總共有三類:

RCC_RTCCLKSource_LSE

RCC_RTCCLKSource_LSI

RCC_RTCCLKSource_HSE_Div128

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

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

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

2.RTC分頻:

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

這個(gè)值是和上面對(duì)應(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):

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

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

Ⅳ、源代碼分析

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

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

1.RCC時(shí)鐘源


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

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

重點(diǎn)注意:

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

B.匹配對(duì)應(yīng)時(shí)鐘。

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

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

2. RTC秒中斷配置


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

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

注意4點(diǎn):

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

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

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

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

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í)。

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

4. RTC中斷


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

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

注意1點(diǎn):

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

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

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

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

    關(guān)注

    2

    文章

    82

    瀏覽量

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

    關(guān)注

    2

    文章

    653

    瀏覽量

    71790
  • 時(shí)鐘源
    +關(guān)注

    關(guān)注

    0

    文章

    110

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

    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參考手冊(cè)資料

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

    STM32F10XXX參考手冊(cè)

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

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

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

    STM32F10xxx參考手冊(cè)

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

    【RA-Eco-RA4M2開發(fā)板評(píng)測(cè)】RTC電子鐘

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

    STM32F10xxx硬件開發(fā)指南

    官方STM32F10xxx硬件開發(fā)指南
    發(fā)表于 04-14 14:59 ?3次下載

    STM32F10xxx單片機(jī)編程手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《STM32F10xxx單片機(jī)編程手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 04-14 14:56 ?17次下載

    STM32F103x8 STM32F103xB單片機(jī)數(shù)據(jù)手冊(cè)

    STM32F103x8STM32F103xB單片機(jī)數(shù)據(jù)手冊(cè)
    發(fā)表于 04-14 14:55 ?8次下載

    STM32F103×8/STM32F103×B MCU手冊(cè)

    參考第2.2節(jié):整個(gè)系列的完全兼容性。中密度STM32F103xx數(shù)據(jù)手冊(cè)必須與低、中、高密度STM 32 f 10 xx參考手冊(cè)一起閱讀。有關(guān)數(shù)據(jù)手冊(cè)和參考手冊(cè)的設(shè)備勘誤表信息,請(qǐng)參考STM
    發(fā)表于 03-18 16:37 ?0次下載

    使用Keil開發(fā)環(huán)境和STM32F103RCT6實(shí)現(xiàn)RTC功能時(shí),總提示\"RTC_InitTypeDef\" is undefined,為什么?

    使用Keil開發(fā)環(huán)境和STM32F103RCT6,實(shí)現(xiàn)RTC功能時(shí),總提示"RTC_InitTypeDef" is undefined? 頭文件已包含,庫文件也已包含,不知是何原因?
    發(fā)表于 03-12 07:38

    STM32L431上使用內(nèi)部RTC,時(shí)間運(yùn)行到23:59:59后,變?yōu)榱?4:00:00并不是00:00:00,為什么?

    大家好,我在STM32L431上使用內(nèi)部RTC,時(shí)間運(yùn)行到23:59:59后,變?yōu)榱?4:00:00,并不是00:00:00,并且weekday也沒有加一,這是為什么呢?
    發(fā)表于 03-11 06:32

    【瑞薩RA2L1入門學(xué)習(xí)】03. RTC 時(shí)鐘日歷&鬧鐘&周期性中斷

    、月、日、時(shí)、分、等時(shí)間信息;在計(jì)時(shí)模式下,RTC則用于產(chǎn)生固定周期的中斷,如每秒一次的中斷。RTC 常見的操作包括設(shè)置時(shí)間、設(shè)置定時(shí)鬧鈴
    發(fā)表于 03-07 16:45