讀者*麗杰*問:
問個問題,我想要獲得比較準確的延時時間,用stm32哪個時鐘,通過什么方法讓他準確?
我的回答:
通過STM32的任意一個TIM定時器都可以達到比較精確的延時時間。
在STM32中,具有計數(shù)(或計時)功能的模塊基本都能實現(xiàn)延時功能。如:系統(tǒng)滴答SysTick、定時器TIM、實時時鐘RTC、看門狗WDG。
精確延時一般使用定時器TIM即可實現(xiàn)。當然,是否精確,取決于你的主頻(也就是晶振)是否準確,如果主頻精確,那么實現(xiàn)的延時也一定精確。
一般來說,常溫下實現(xiàn)us微秒級的延時,誤差還是挺小的(應(yīng)該說挺精確)。拿F407,主頻168M來說,可以實現(xiàn)幾十ns納秒的延時,如果選用高精度的晶振,誤差還是很小的。
總結(jié):想要TIM定時器實現(xiàn)高精確的延時,就需要高精度的晶振。主頻精確,那么延時就精確。
STM32的定時器有3類:
高級定時器Advanced control Timer
通用定時器General purpose Timer
基本定時器Basic Timer
STM32的這三種定時器都能實現(xiàn)最基本的定時計數(shù)功能。差異在于它們的功能多少不一樣,從結(jié)構(gòu)圖一目了然,下面以STM32F4為例,給大家展示一下F4三類定時器的結(jié)構(gòu)圖:
高級定時器
通用定時器
基本定時器
相信大家看了上面3種結(jié)構(gòu)圖,心里大概應(yīng)該明白它們的差異存在哪些地方。 具體差異可以參看手冊中的“主要特性”,里面詳細講述了其中的功能和特性。
重要提示:
1.定時器的位數(shù)有16位和32位之分,詳見數(shù)據(jù)手冊。
2.定時器有多少個,以及是TIM幾,同樣見數(shù)據(jù)手冊。如下圖STM32F411就只有8個定時器,沒有基本定時器。
上面3種定時器(高級、通用和基本)都能實現(xiàn)計數(shù)延時的功能,我們以最簡單的基本定時器為例,還是參看著結(jié)構(gòu)圖來說明:
1.來自RCC的時鐘,參看RCC時鐘樹,一般是SystemCoreClock或者SystemCoreClock/2, 如STM32F429的就是(180M/2)。
2.分頻CK_PSC之后就是計數(shù)器CK_CNT的計數(shù)頻率。
如分頻值位9,則計數(shù)頻率為1M. (180M / 2 / 9 = 10M).
3.實現(xiàn)1us計數(shù):
上面1秒計數(shù)10M個數(shù),那么我計10個數(shù),就是1us的時間。只需要在自動重載寄存器ARR中填充10 - 1即可。
代碼分析:
紅定義
//計數(shù)時鐘(相當于1秒鐘計數(shù)10M次個脈沖)
#define TIM6_COUNTER_CLOCK 10000000
//預分頻值
#define TIM6_PRESCALER_VALUE (SystemCoreClock/2/TIM6_COUNTER_CLOCK - 1)
//定時周期(計數(shù)滿10個算一個周期,也就是1us)
#define TIM6_PERIOD_TIMING (10 - 1)
配置
void TIM6_Configuration(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
/* TIM6時基單元配置 */
TIM_TimeBaseStructure.TIM_Prescaler = TIM6_PRESCALER_VALUE; //預分頻值
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上計數(shù)模式
TIM_TimeBaseStructure.TIM_Period = TIM6_PERIOD_TIMING; //定時周期
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //時鐘分頻因子
TIM_TimeBaseInit(TIM6, &TIM_TimeBaseStructure);
//TIM_ITConfig(TIM6, TIM_IT_Update, ENABLE); //使能"更新"中斷
}
如果需要中斷,則開啟1us中斷。
定時器阻塞延時
void TIM6_Nus(uint16_t Times)
{
TIM_Cmd(TIM6, ENABLE); //啟動定時器
while(Times--)
{ while(TIM_GetFlagStatus(TIM6, TIM_FLAG_Update) == RESET); //等待計數(shù)完成
TIM_ClearFlag(TIM6, TIM_FLAG_Update); //清除標志
}
TIM_Cmd(TIM6, DISABLE); //關(guān)閉定時器
}
以上代碼,之前有分享過類似的,在下載區(qū) STM32F417_第一階段里面。
提示:
1.這類阻塞延時,僅供學習其原理使用,請結(jié)合實際項目修改代碼。
2.可以通過定時中斷 + 讀取計數(shù)器的值來獲取精確的時間。
比如:1ms中斷一次,同時,計數(shù)累加。獲取計數(shù)值 + 累計值也能得出精確延時。 (當然,中斷不能太頻繁), 此原理,適用于其他SysTick,RTC等具有計數(shù)功能的模塊。
上一篇:STM32編碼器接口,以及應(yīng)用編程
下一篇:你的STM32芯片F(xiàn)LASH容量真如ST官方選型手冊那樣嗎?
推薦閱讀
史海拾趣
Bel Fuse公司的創(chuàng)立可以追溯到XXXX年,當時它由幾位富有遠見的工程師在新澤西州創(chuàng)立。起初,公司專注于保險絲的研發(fā)和生產(chǎn),致力于提供高質(zhì)量的電氣保護產(chǎn)品。憑借卓越的技術(shù)和可靠的產(chǎn)品質(zhì)量,Bel Fuse逐漸在市場上獲得了認可,并開始擴展其產(chǎn)品線。
在電子組裝領(lǐng)域,跨界合作成為了一種新的發(fā)展趨勢。一家名為“創(chuàng)新電子組裝”的公司通過與多家知名企業(yè)開展跨界合作,實現(xiàn)了資源共享、優(yōu)勢互補。公司不僅從合作伙伴那里學到了先進的技術(shù)和管理經(jīng)驗,還成功拓展了業(yè)務(wù)領(lǐng)域和市場渠道。通過跨界合作,創(chuàng)新電子組裝實現(xiàn)了跨越式發(fā)展,成為了行業(yè)內(nèi)的佼佼者。
為了進一步擴大市場份額和提升品牌影響力,Allianc公司開始實施國際化戰(zhàn)略。公司積極開拓海外市場,與多家國際知名企業(yè)建立了合作關(guān)系。同時,公司還加強了對海外市場的調(diào)研和分析,針對不同地區(qū)的消費者需求推出了定制化產(chǎn)品。這些舉措使得Allianc公司在國際市場上的份額不斷攀升,品牌影響力也逐漸增強。
在取得一系列輝煌成就的同時,Anderson Electronics Inc公司始終關(guān)注可持續(xù)發(fā)展和環(huán)境保護。公司積極推行綠色生產(chǎn)理念,采用環(huán)保材料和節(jié)能技術(shù),努力降低生產(chǎn)過程中的能耗和排放。同時,公司還關(guān)注社會責任和公益事業(yè),積極參與社會公益活動,回饋社會。展望未來,公司將繼續(xù)堅持創(chuàng)新驅(qū)動、質(zhì)量為本的發(fā)展理念,不斷推動技術(shù)創(chuàng)新和產(chǎn)業(yè)升級,為電子行業(yè)的發(fā)展貢獻更多的力量。
請注意,以上內(nèi)容僅為一個通用的框架,具體的故事內(nèi)容需要根據(jù)Anderson Electronics Inc公司的實際情況進行創(chuàng)作。在撰寫時,您可以結(jié)合公司的歷史背景、發(fā)展歷程、技術(shù)創(chuàng)新、市場拓展、國際合作、產(chǎn)業(yè)升級等方面的信息進行詳細描述,以展現(xiàn)公司在電子行業(yè)中的發(fā)展歷程和成就。
面對電子行業(yè)的快速變革和市場競爭的加劇,Anderson Electronics Inc公司積極進行產(chǎn)業(yè)升級和智能制造的轉(zhuǎn)型。公司引進了先進的生產(chǎn)設(shè)備和技術(shù),實現(xiàn)了生產(chǎn)過程的自動化和智能化。同時,公司還加大了對研發(fā)人員的培養(yǎng)和引進力度,建立了一支高素質(zhì)的研發(fā)團隊。通過產(chǎn)業(yè)升級和智能制造的轉(zhuǎn)型,公司成功提升了生產(chǎn)效率和產(chǎn)品質(zhì)量,進一步鞏固了市場地位。
隨著全球化趨勢的加強,Anderson Electronics Inc公司開始尋求國際合作,與國外知名電子企業(yè)開展技術(shù)交流和合作研發(fā)。通過與國際先進技術(shù)的融合和創(chuàng)新,公司成功開發(fā)出了一系列具有國際競爭力的新產(chǎn)品。這些產(chǎn)品不僅在國內(nèi)市場取得了成功,還遠銷海外,為公司帶來了可觀的利潤和更廣闊的發(fā)展空間。
一、A3系列電源輸入限制浪涌電流模塊簡介 1、電源簡介 開關(guān)電源由于在體積、重量和效率等多方面的優(yōu)勢,已經(jīng)越來越廣泛地應(yīng)用在通信、航天航空、軍工兵器、發(fā)電變電等領(lǐng)域。從1955年美國科學家羅耶(G.H.ROYER)首先研制成功了利用磁飽和進行自激振蕩 ...… 查看全部問答∨ |
|
51上跑操作系統(tǒng)聽起來就覺得很過癮,目前還在學習學習中~~~ 終極目標是自己能寫一個10任務(wù)的os~~妄想中。。。 用到定時器中斷,得解決重入等問題~如果有做過的幫忙指導一下!… 查看全部問答∨ |
|
我現(xiàn)在要寫一個信號接收器的驅(qū)動 比如:在考場放置很多信號接收器,寫個驅(qū)動后在電腦上就可以觀察所有的信號接收器的情況。 我就想問像這種驅(qū)動使用什么寫的? 用的是什么技術(shù)? 最好能說些看些什么書? 因為前面沒學過這種東西,希望高手指定 ...… 查看全部問答∨ |
Wavecom貓在Windows自帶的超級終端可正常發(fā)送短信,可使用串口編程方式發(fā)送短信時失???為啥?? Wavecom貓在Windows自帶的超級終端可正常發(fā)送短信,可使用串口編程方式發(fā)送短信時失敗?為啥??我試驗了好幾天了,每次用Windows自帶的超級終端就可以,一旦換到用Vc++串口編程方式就失敗。用PortMan監(jiān)視數(shù)據(jù)也沒找到失敗的原因?有做過碰到過釘子 ...… 查看全部問答∨ |
以前電路設(shè)計時用了一塊EMST廠家的SDRAM,工作頻率是133MHz,現(xiàn)在由于停產(chǎn)所以不得以只能換器件,但找到最高工作頻率是200MHz的替代品,不知道能否直接降頻使用?原先板上的時鐘是133的,請大家?guī)兔μ醾€建議,謝謝!… 查看全部問答∨ |
來自EEWORLD合作群:49900581 群主:wangkj這個函數(shù)是自己定義的,明明已經(jīng)定義了而且也實現(xiàn)了… 查看全部問答∨ |
經(jīng)典國外照明設(shè)計叢書《照明設(shè)計入門》 replyreload += \',\' + 1432027;不需要或者已經(jīng)有的朋友可以略過。文件格式:PDF 本書是具有照明實踐經(jīng)驗的三位作者同心協(xié)力、共同編著而成的。主要以想要學習照明設(shè)計的人,已經(jīng)在從事照明設(shè)計的人,想要把照明設(shè)計 ...… 查看全部問答∨ |
設(shè)計資源 培訓 開發(fā)板 精華推薦
- 榜單!1700萬輛座艙域控「紅利」,誰是大贏家?龍頭格局揭曉!
- 多點觸摸感應(yīng)技術(shù)給人機界面帶來的改變
- H.265:網(wǎng)絡(luò)視頻的高清時代
- 大聯(lián)大友尚集團推出基于ST產(chǎn)品的工業(yè)PLC方案
- 電視棒工作原理很簡單 有網(wǎng)絡(luò)就能變身智能電視
- 牛B的手勢操控是如何煉成的
- Bourns 擴展符合 AEC-Q200 標準車規(guī)級電流檢測電阻產(chǎn)品線
- 基于G.729壓縮語音流隱蔽通信系統(tǒng)設(shè)計方案
- 觸摸控制器如何滿足大屏觸控設(shè)備抗噪新需求?
- Bourns 擴展半屏蔽功率電感產(chǎn)品組合,推出具更高最大感值新系列
- 跟上未來,走進恩智浦最新技術(shù)大講堂
- 快來訪問泰克高速串行通信專題 配置您的專屬解決方案 贏好禮!
- 助推電動時代,與英飛凌一起探索電動汽車三大產(chǎn)品技術(shù)
- TI有獎直播:使用 MSPM0 AEC-Q100 MCU 設(shè)計更智能的汽車系統(tǒng)
- 您的電源符合能耗標準嗎?關(guān)注PI InnoSwitch3系列,答題贏好禮!
- 來吧!來吧!一起玩轉(zhuǎn)三維加速度傳感器
- Mentor線上研討會丨FPGA仿真驗證平臺ModelSim應(yīng)用進階
- 有獎直播 11月27日上午10:00 準時開啟!富士通賦能汽車電子技術(shù)變革
- 有獎直播|英飛凌系統(tǒng)解決方案讓電動摩托設(shè)計更加可靠高效!
- TE Connectivity 提供更懂你的連接解決方案