日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]Ⅰ、概述接著上一篇文章來講述關(guān)于RTC的計數(shù)功能,我們以實(shí)例RTC日歷(讀寫年、月、日、星期、時、分、秒)來講述該章節(jié)。STM32F1系列芯片的RTC功能和其他系列(F0、F2、F4等)相比來說,功能要弱一點(diǎn),原因在于F1系

Ⅰ、概述

接著上一篇文章來講述關(guān)于RTC的計數(shù)功能,我們以實(shí)例RTC日歷(讀寫年、月、日、星期、時、分、秒)來講述該章節(jié)。

STM32F1系列芯片的RTC功能和其他系列(F0、F2、F4等)相比來說,功能要弱一點(diǎn),原因在于F1系列的RTC日歷功能需要我們通過軟件進(jìn)行處理(換算RTC計數(shù)值)才能真正實(shí)現(xiàn)RTC日歷的功能,而其他系列芯片不用這么麻煩,可直接讀取日歷值。

該文和上一篇文章的區(qū)別:1、RTC時鐘源選擇LSE(外部低速時鐘); 2、分頻值是32768; 3、讀寫了RTC_CNT(計數(shù)值),用于RTC日歷。

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

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

間隔1秒中斷:讀取日歷并打印出來。

電腦串口調(diào)試助手接收到數(shù)據(jù):年月日星期時分秒

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

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

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

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

提供下載的軟件工程是基于Keil(MDK-ARM)v5版本、STM32F103ZE芯片,但F1其他型號也適用(適用F1其他型號: 關(guān)注微信,回復(fù)“修改型號”)。

STM32F10x_RTC日歷(LSE)實(shí)例源代碼工程:

https://yunpan.cn/cBDwPJcChZRFE訪問密碼

STM32F10x_RTC日歷(LSI)實(shí)例源代碼工程:

https://yunpan.cn/cBDwSikRhZ2Nk訪問密碼

STM32F1資料:

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

Ⅲ、原理描述

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

RTC框圖:

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

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

RCC_RTCCLKSource_LSE

RCC_RTCCLKSource_LSI

RCC_RTCCLKSource_HSE_Div128

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

重點(diǎn):

細(xì)心的朋友可能會發(fā)現(xiàn):筆者還提供了一個實(shí)例“STM32F10x_RTC日歷(LSI)”。對,這個實(shí)例是以LSI內(nèi)部低速時鐘作為RTC時鐘源。

先問兩個問題:1、為什么不建議使用LSI作為時鐘源來設(shè)計日歷? 2、兩個實(shí)例工程之間的差別? 將實(shí)例中使用“LSE”時鐘改為“LSI”時鐘,其他地方不該可以嗎?【在下面解答】

2.RTC分頻:

本文實(shí)例代碼是:RTC_SetPrescaler(32768-1);

外部低速時鐘頻率為32.768K,我們要達(dá)到1秒計數(shù)(RTC_CNT)一次,則需要分頻32768.

3.RTC中斷:

RTC中斷有三種:

RTC_IT_SEC秒中斷

RTC_IT_ALR鬧鐘中斷

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

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

使能RTC_IT_SEC秒中斷,間隔1秒中斷一次,打印日歷。

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

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

4.RTC日歷的來由:

在文章開頭已經(jīng)說了,F(xiàn)1系列中RTC只要RTC_CNT寄存器,不像F0、F4等有現(xià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_LSE);

在原理描述中說了,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(計數(shù))溢出中斷

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

D.RTC分頻:RTC_SetPrescaler(32767);

我們是為了得到真正的1秒鐘中斷一次。

3. RTC初始化

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

A.我們使用BKP保存“標(biāo)志位”數(shù)據(jù)(第一次才初始化,后面就不用初始化了)。我們初始化時間為:2016年7月18日 18:00:00(假如為當(dāng)前值)。 如果有電池,則會按照這個時間一直持續(xù)下去,系統(tǒng)掉電之后也不會影響時鐘的計數(shù)。

B.第二次及以后上電需要等待RTC與RTC_APB時鐘同步。

C.使能RTC秒中斷,我們用于測試并打印RTC日歷數(shù)據(jù)。如果你的應(yīng)用是直接讀取RTC日歷,不是想我們實(shí)例那樣中斷打印數(shù)據(jù),則可以不開啟該中斷。

4. RTC讀寫描述

該結(jié)構(gòu)體位于rtc.h文件下面;

這要就是用于讀寫用(這樣直接傳遞一個參數(shù)就行了,不用傳遞“一串”整形變量)

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

RTC日歷寫(設(shè)置)函數(shù),這個函數(shù)是筆者整理并經(jīng)過項(xiàng)目驗(yàn)證的,可直接調(diào)用。

注意:

參數(shù)不能越界(超出范圍),超出范圍會返回錯誤。

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

RTC日歷讀(獲?。┖瘮?shù),這個函數(shù)是筆者整理并經(jīng)過項(xiàng)目驗(yàn)證的,可直接調(diào)用。

注意:

需要配置RTC并初始化RTC值才會讀出正確的日歷值。

Ⅴ、解答問題

上面筆者留下的問題或許對于初學(xué)者不是很關(guān)心,但對于在工作中,需要實(shí)際項(xiàng)目的開發(fā)的人應(yīng)該比較有幫助。

1、為什么不建議使用LSI作為時鐘源來設(shè)計日歷?

原因在于LSI不是屬于后備區(qū)域,而RTC日歷部分是屬于后備局域(見上圖),也就是說系統(tǒng)一旦掉電,RTC時鐘就不能工作了。

2、兩個實(shí)例工程之間的差別? 將實(shí)例中使用“LSE”時鐘改為“LSI”時鐘,其他地方不該可以嗎?

這個地方和第一個問題有關(guān)聯(lián),修改后的工程程序會死在等待時鐘同步的地方。

Ⅵ、說明

這篇文章是結(jié)合前幾篇文章來講述的,可以在微信“歷史消息”中查看。

關(guān)于筆者提供的軟件工程實(shí)例,可關(guān)注微信,在會話框回復(fù)“關(guān)于工程”,有關(guān)于工程結(jié)構(gòu)描述、型號修改等講述。

以上總結(jié)僅供參考,若有不對之處,敬請諒解。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

一、在STM32中,有5個時鐘源,為HSI,HSE,LSI,LSE,PLL.①HSI是高速內(nèi)部時鐘,RC振蕩器,頻率為8MHz;②HSE--高速外部時鐘,可接石英或者陶瓷諧振器,或者外部時鐘源,頻率范圍4MHz--15M...

關(guān)鍵字: STM32 stm32f10x 時鐘配置

;******************** (C) COPYRIGHT 2010 STMicroelectronics ********************;* File Name: startup_stm32f10...

關(guān)鍵字: stm32f10x 啟動代碼

環(huán)境:STM32F10x 3.5固件庫。下載地址http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/stm32f10x_stdp...

關(guān)鍵字: stm32f10x 新建工程

USB速度慢的原因有以下幾種可能:1、協(xié)議問題 全速的USB設(shè)備,最大速度12Mb/s,但是如果跑的是HID之類慢速設(shè)備的協(xié)議,那么速度就沒有那么快了,理論上只有1.5Mb/s。2、配置問題 USB配置描述符中有關(guān)于接收...

關(guān)鍵字: stm32f10x usb速度慢

Ⅰ、概述RTC(Real Time Clock)是實(shí)時時鐘的意思,它其實(shí)和TIM有點(diǎn)類似,也是利用計數(shù)的原理,選擇RTC時鐘源,再進(jìn)行分頻,到達(dá)計數(shù)的目的。該文主要講述關(guān)于RTC的秒中斷功能,這個功能類似SysTick系...

關(guān)鍵字: rtc stm32f10x 秒中斷

先從最簡單的問題開始,用STM32外部中斷的方法實(shí)現(xiàn)PB.0按鍵控制PA.0LED燈:先總的說下實(shí)現(xiàn)中斷的步驟:1,配置NVIC寄存器(函數(shù)),設(shè)置中斷為第幾組,占先優(yōu)先級和次優(yōu)先級; 函數(shù)方法: void NVIC_C...

關(guān)鍵字: gpio stm32f10x 外部中斷

? ? ? ? stm32是自帶硬件I2C,相比于軟件模擬I2c,硬件I2c效率更高。但是據(jù)說不穩(wěn)定,這個我倒暫時還沒有體會到。? ? ? ? 在最開始使用硬件I2c的時候,程序總是卡死,要不從一開始

關(guān)鍵字: i2c STM32 stm32f10x

SysTick定時器被集成在NVIC中。因此,只要是Cortex-M3內(nèi)核的單片機(jī),就都有它。這個學(xué)習(xí)筆記就用SysTick定時器來實(shí)現(xiàn)走馬燈的功能。SysTick定時器非常簡答,只有四個寄存器。這四個寄存器的含義在《C...

關(guān)鍵字: stm32f10x systick 定時器

Ⅰ、寫在前面關(guān)注我分享文章的朋友應(yīng)該知道我在前面講述過(軟件、硬件)I2C主機(jī)控制從機(jī)EEPROM的例子。在I2C通信主機(jī)控制程序是比較常見的一種,可以說在實(shí)際項(xiàng)目中,很多應(yīng)用都會使用到I2C通信。但在實(shí)際項(xiàng)目中作為

關(guān)鍵字: stm32f10x 中斷接收 主從通信 硬件i2c 輪詢發(fā)送

  簡單的一種應(yīng)用,ARM芯片作為master,flash為slaver,實(shí)現(xiàn)單對單通信。ARM主控芯片STM32F103,flash芯片為MACRONIX INTERNATIONAL的MX25L6465E,64Mbit...

關(guān)鍵字: spi stm32f10x 操作flash mx25l64 讀寫數(shù)據(jù)
關(guān)閉