在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

關(guān)于STM32的計(jì)數(shù)與延時(shí)

黃工的嵌入式技術(shù)圈 ? 來源:黃工的嵌入式技術(shù)圈 ? 2020-03-12 11:20 ? 次閱讀

Ⅰ關(guān)于STM32的計(jì)數(shù)和延時(shí)

在STM32中,具有計(jì)數(shù)(或計(jì)時(shí))功能的模塊基本都能實(shí)現(xiàn)延時(shí)功能。如:系統(tǒng)滴答SysTick、定時(shí)器TIM、實(shí)時(shí)時(shí)鐘RTC、看門狗WDG。

精確延時(shí)一般使用定時(shí)器TIM即可實(shí)現(xiàn)。當(dāng)然,是否精確,取決于你的主頻(也就是晶振)是否準(zhǔn)確,如果主頻精確,那么實(shí)現(xiàn)的延時(shí)也一定精確。

一般來說,常溫下實(shí)現(xiàn)us微秒級(jí)的延時(shí),誤差還是挺小的(應(yīng)該說挺精確)。拿F407,主頻168M來說,可以實(shí)現(xiàn)幾十ns納秒的延時(shí),如果選用高精度的晶振,誤差還是很小的。

總結(jié):想要TIM定時(shí)器實(shí)現(xiàn)高精確的延時(shí),就需要高精度的晶振。主頻精確,那么延時(shí)就精確。

ⅡSTM32的TIM定時(shí)器

STM32的定時(shí)器有3類:

高級(jí)定時(shí)器Advanced control Timer

通用定時(shí)器General purpose Timer

基本定時(shí)器BasicTimer

STM32的這三種定時(shí)器都能實(shí)現(xiàn)最基本的定時(shí)計(jì)數(shù)功能。差異在于它們的功能多少不一樣,從結(jié)構(gòu)圖一目了然,下面以STM32F4為例,給大家展示一下F4三類定時(shí)器的結(jié)構(gòu)圖:

高級(jí)定時(shí)器

通用定時(shí)器

基本定時(shí)器

相信大家看了上面3種結(jié)構(gòu)圖,心里大概應(yīng)該明白它們的差異存在哪些地方。具體差異可以參看手冊(cè)中的“主要特性”,里面詳細(xì)講述了其中的功能和特性。

重要提示:

1.定時(shí)器的位數(shù)有16位和32位之分,詳見數(shù)據(jù)手冊(cè)。

2.定時(shí)器有多少個(gè),以及是TIM幾,同樣見數(shù)據(jù)手冊(cè)。如下圖STM32F411就只有8個(gè)定時(shí)器,沒有基本定時(shí)器。

ⅢSTM32定時(shí)器計(jì)數(shù)延時(shí)原理

上面3種定時(shí)器(高級(jí)、通用和基本)都能實(shí)現(xiàn)計(jì)數(shù)延時(shí)的功能,我們以最簡單的基本定時(shí)器為例,還是參看著結(jié)構(gòu)圖來說明:

1.來自RCC的時(shí)鐘,參看RCC時(shí)鐘樹,一般是SystemCoreClock或者SystemCoreClock/2, 如STM32F429的就是(180M/2)。

2.分頻CK_PSC之后就是計(jì)數(shù)器CK_CNT的計(jì)數(shù)頻率。

如分頻值位9,則計(jì)數(shù)頻率為1M. (180M / 2 /9= 10M).

3.實(shí)現(xiàn)1us計(jì)數(shù):

上面1秒計(jì)數(shù)10M個(gè)數(shù),那么我計(jì)10個(gè)數(shù),就是1us的時(shí)間。只需要在自動(dòng)重載寄存器ARR中填充10 - 1即可。

代碼分析:

紅定義

//計(jì)數(shù)時(shí)鐘(相當(dāng)于1秒鐘計(jì)數(shù)10M次個(gè)脈沖) #define TIM6_COUNTER_CLOCK 10000000 //預(yù)分頻值 #define TIM6_PRESCALER_VALUE (SystemCoreClock/2/TIM6_COUNTER_CLOCK - 1) //定時(shí)周期(計(jì)數(shù)滿10個(gè)算一個(gè)周期,也就是1us) #define TIM6_PERIOD_TIMING (10 - 1)

配置

void TIM6_Configuration(void){ TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; /* TIM6時(shí)基單元配置 */ TIM_TimeBaseStructure.TIM_Prescaler = TIM6_PRESCALER_VALUE; //預(yù)分頻值 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上計(jì)數(shù)模式 TIM_TimeBaseStructure.TIM_Period = TIM6_PERIOD_TIMING; //定時(shí)周期 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //時(shí)鐘分頻因子 TIM_TimeBaseInit(TIM6, &TIM_TimeBaseStructure); //TIM_ITConfig(TIM6, TIM_IT_Update, ENABLE); //使能"更新"中斷 }

如果需要中斷,則開啟1us中斷。

定時(shí)器阻塞延時(shí)

void TIM6_Nus(uint16_t Times){ TIM_Cmd(TIM6, ENABLE); //啟動(dòng)定時(shí)器 while(Times--) { while(TIM_GetFlagStatus(TIM6, TIM_FLAG_Update) == RESET); //等待計(jì)數(shù)完成 TIM_ClearFlag(TIM6, TIM_FLAG_Update); //清除標(biāo)志 } TIM_Cmd(TIM6, DISABLE); //關(guān)閉定時(shí)器 }

以上代碼,之前有分享過類似的,在下載區(qū) STM32F417_第一階段里面。

提示:

1.這類阻塞延時(shí),僅供學(xué)習(xí)其原理使用,請(qǐng)結(jié)合實(shí)際項(xiàng)目修改代碼。

2.可以通過定時(shí)中斷 + 讀取計(jì)數(shù)器的值來獲取精確的時(shí)間。

比如:1ms中斷一次,同時(shí),計(jì)數(shù)累加。獲取計(jì)數(shù)值 +累計(jì)值也能得出精確延時(shí)。 (當(dāng)然,中斷不能太頻繁), 此原理,適用于其他SysTick,RTC等具有計(jì)數(shù)功能的模塊。

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

    關(guān)注

    0

    文章

    108

    瀏覽量

    25770
  • STM32
    +關(guān)注

    關(guān)注

    2283

    文章

    10986

    瀏覽量

    361321
  • Tim
    Tim
    +關(guān)注

    關(guān)注

    0

    文章

    83

    瀏覽量

    18183
  • 計(jì)數(shù)
    +關(guān)注

    關(guān)注

    1

    文章

    57

    瀏覽量

    20286
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32F030內(nèi)部晶振怎么設(shè)置,內(nèi)部晶振是延時(shí)函數(shù)怎么設(shè)置?

    STM32F030內(nèi)部晶振怎么設(shè)置,內(nèi)部晶振是延時(shí)函數(shù)怎么設(shè)置 使用STM32F030時(shí)沒使用內(nèi)部晶振怎么設(shè)置,使用內(nèi)部晶振時(shí)延時(shí)函數(shù)怎么寫?謝謝大俠
    發(fā)表于 04-23 07:45

    使用STM32F030時(shí)沒使用內(nèi)部晶振怎么設(shè)置,使用內(nèi)部晶振時(shí)延時(shí)函數(shù)怎么寫?

    STM32F030內(nèi)部晶振怎么設(shè)置,內(nèi)部晶振是延時(shí)函數(shù)怎么設(shè)置 使用STM32F030時(shí)沒使用內(nèi)部晶振怎么設(shè)置,使用內(nèi)部晶振時(shí)延時(shí)函數(shù)怎么寫?謝謝大俠
    發(fā)表于 03-07 08:13

    延時(shí)繼電器功能匯總與應(yīng)用

    延時(shí)繼電器是一種在電氣系統(tǒng)中廣泛應(yīng)用的控制元件,在電路中實(shí)現(xiàn)定時(shí)閉合或斷開控制,為各種應(yīng)用場景提供靈活的時(shí)間管理功能。 通常,聚英延時(shí)繼電器由一個(gè)控制電壓引發(fā),該控制電壓可以是任何符合電器設(shè)備功能
    的頭像 發(fā)表于 01-17 16:03 ?427次閱讀

    使用ADC08D500對(duì)模擬信號(hào)采樣時(shí),遇到的延時(shí)疑問求解

    使用ADC08D500對(duì)模擬信號(hào)采樣時(shí),設(shè)置的工作模式為DES模式,采樣速率為1G,利用FPGA接收采集的數(shù)據(jù)。但是,當(dāng)輸入的模擬信號(hào)延時(shí)100ns時(shí),利用計(jì)數(shù)器測量延時(shí)時(shí)(計(jì)數(shù)器利
    發(fā)表于 12-20 16:36

    關(guān)于ADS1120延時(shí)的疑問求解

    再請(qǐng)教個(gè)關(guān)于ADS1120延時(shí),我這樣計(jì)算是不是正確: 在9.1.6的示例中,有這樣一句 Delay for a minimum of 50 μs + 32 · t(CLK); 我用的是正常
    發(fā)表于 11-26 06:49

    延時(shí)開關(guān)需要零線嗎為什么

    延時(shí)開關(guān)是一種常見的電氣控制元件,廣泛應(yīng)用于各種電氣設(shè)備和系統(tǒng)中。它的作用是在電路中引入一定的延時(shí),以實(shí)現(xiàn)對(duì)電路的控制和保護(hù)。延時(shí)開關(guān)的種類很多,包括機(jī)械式延時(shí)開關(guān)、電子式
    的頭像 發(fā)表于 08-19 15:56 ?833次閱讀

    延時(shí)開關(guān)接線技巧與注意事項(xiàng)有哪些

    延時(shí)開關(guān)的接線技巧與注意事項(xiàng)是確保延時(shí)開關(guān)正確安裝和穩(wěn)定運(yùn)行的關(guān)鍵。 一、延時(shí)開關(guān)接線技巧 1. 理解延時(shí)開關(guān)的基本結(jié)構(gòu) 延時(shí)開關(guān)通常包含多
    的頭像 發(fā)表于 08-19 15:54 ?1887次閱讀

    延時(shí)開關(guān)改手動(dòng)開關(guān)怎么接線

    延時(shí)開關(guān)和手動(dòng)開關(guān)是兩種不同類型的開關(guān),它們的工作原理和接線方式也有所不同。在某些情況下,我們可能需要將延時(shí)開關(guān)改為手動(dòng)開關(guān),以滿足特定的使用需求。 一、延時(shí)開關(guān)和手動(dòng)開關(guān)的區(qū)別 工作原理
    的頭像 發(fā)表于 08-19 15:49 ?1270次閱讀

    延時(shí)開關(guān)怎么調(diào)時(shí)間長短

    延時(shí)開關(guān)是一種常見的電子控制設(shè)備,廣泛應(yīng)用于各種場合,如照明、空調(diào)、風(fēng)扇等。它可以根據(jù)用戶的需求,設(shè)定一定的延時(shí)時(shí)間,實(shí)現(xiàn)自動(dòng)控制。 一、延時(shí)開關(guān)的工作原理 延時(shí)開關(guān)的基本組成
    的頭像 發(fā)表于 08-19 15:46 ?3960次閱讀

    延時(shí)開關(guān)上l和a是什么意思

    延時(shí)開關(guān)是一種常見的電子控制元件,廣泛應(yīng)用于各種電子設(shè)備和系統(tǒng)中。它可以實(shí)現(xiàn)對(duì)電路的自動(dòng)控制,使電路在一定的延時(shí)后自動(dòng)接通或斷開。在延時(shí)開關(guān)的標(biāo)識(shí)中,L和A通常代表不同的意義。 一、延時(shí)
    的頭像 發(fā)表于 08-19 15:45 ?7700次閱讀

    揭秘:單片機(jī)硬件與軟件延時(shí)之大不同!

    在嵌入式項(xiàng)目中,軟件開發(fā)基本上都會(huì)使用到延時(shí),那么,該用軟件延時(shí)還是硬件延時(shí)?它們又有什么區(qū)別呢?今天就來講講關(guān)于硬件延時(shí)和軟件
    的頭像 發(fā)表于 07-25 08:11 ?1156次閱讀
    揭秘:單片機(jī)硬件與軟件<b class='flag-5'>延時(shí)</b>之大不同!

    斷電延時(shí)繼電器的實(shí)際應(yīng)用

    斷電延時(shí)繼電器作為一種常見的電器設(shè)備,在現(xiàn)代生活中有著廣泛的應(yīng)用。它通過控制電路的開關(guān)時(shí)間來實(shí)現(xiàn)電器設(shè)備的延時(shí)關(guān)閉,從而達(dá)到省電、安全等目的。以下將結(jié)合多個(gè)應(yīng)用實(shí)例,詳細(xì)闡述斷電延時(shí)繼電器的實(shí)際應(yīng)用。
    的頭像 發(fā)表于 07-17 16:51 ?1795次閱讀

    延時(shí)繼電器工作原理及應(yīng)用實(shí)例

    延時(shí)繼電器是一種電氣控制元件,它能夠在接收到啟動(dòng)信號(hào)后,并非立即執(zhí)行動(dòng)作(如閉合或斷開觸點(diǎn)),而是在經(jīng)過預(yù)設(shè)的時(shí)間延遲后才執(zhí)行相應(yīng)操作。延時(shí)繼電器廣泛應(yīng)用于各類自動(dòng)控制系統(tǒng)和保護(hù)系統(tǒng)中,實(shí)現(xiàn)時(shí)間控制
    的頭像 發(fā)表于 06-23 11:54 ?4801次閱讀

    如何使用定時(shí)器寫一個(gè)延時(shí)函數(shù)?

    ;//不報(bào)警不中斷 delay.counter_en=1;//使能定時(shí)器 timer_init(0,0,&delay);//0組0定時(shí)器初始化 }; 按照stm32的寫法應(yīng)該還有一個(gè)更新狀態(tài)位,等待定時(shí)器計(jì)時(shí)更新完成就是延時(shí)了,esp32是哪個(gè)呢?求解答
    發(fā)表于 06-14 06:03

    stm32cubemx的HAL_Delay()函數(shù),當(dāng)HAL_GetTick()的計(jì)數(shù)正好要溢出時(shí),是不是延時(shí)就不準(zhǔn)了?

    (); while((HAL_GetTick() - tickstart) < Delay) { } } 這里使用這個(gè)延時(shí)函數(shù)有沒有這種情況,當(dāng)HAL_GetTick()的計(jì)數(shù)正好要溢出時(shí),是不是延時(shí)就不準(zhǔn)了?
    發(fā)表于 05-09 06:20
    主站蜘蛛池模板: 日韩成人毛片高清视频免费看 | 色多多视频在线观看播放 | 日本级毛片免费观看 | 久久天天躁狠狠躁夜夜免费观看 | 美女流白浆网站 | 永久影视 | 欧美资源在线 | 日本黄色大片在线观看 | 国内真实下药迷j在线观看 国内自拍 亚洲系列 欧美系列 | 成年色黄大色黄大片 视频 成年视频xxxxx免费播放软件 | 国产一级特黄aa级特黄裸毛片 | 优优国产在线视频 | 欧美黄色三级视频 | 美女扒开腿让男人桶尿口 | 亚洲成人精品在线 | 欧美综合网站 | sss欧美一区二区三区 | 天堂中文在线免费观看 | 色婷婷视频在线观看 | 一区二区中文字幕在线观看 | 欧美不卡视频在线观看 | 亚洲综合一 | 特一级黄 | 久久天天躁夜夜躁狠狠躁2015 | 午夜国产高清精品一区免费 | 色噜噜狠狠狠综合曰曰曰 | 亚洲国产日韩欧美在线as乱码 | 天天摸天天操天天爽 | 亚洲va国产日韩欧美精品色婷婷 | 特级片免费看 | 五月天丁香婷婷开心激情五月 | 美女扒开尿口给男人爽的视频 | 最新日本免费一区二区三区中文 | 男男之h啪肉np文 | 欧美成人a | 欧美xxxxx精品| 国产免费爽爽视频免费可以看 | 久久精品国产乱子伦多人 | 午夜精品久久久久 | 色播视频在线观看免费 | 久久国产成人午夜aⅴ影院 久久国产福利 |