女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

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

黃工的嵌入式技術(shù)圈 ? 來(lái)源:黃工的嵌入式技術(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í)也一定精確。

一般來(lái)說(shuō),常溫下實(shí)現(xiàn)us微秒級(jí)的延時(shí),誤差還是挺小的(應(yīng)該說(shuō)挺精確)。拿F407,主頻168M來(lái)說(shuō),可以實(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位之分,詳見(jiàn)數(shù)據(jù)手冊(cè)。

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

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

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

1.來(lái)自RCC的時(shí)鐘,參看RCC時(shí)鐘樹(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); //使能"更新"中斷 }

如果需要中斷,則開(kāi)啟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í)器 }

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

提示:

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

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

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

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

    關(guān)注

    0

    文章

    108

    瀏覽量

    25908
  • STM32
    +關(guān)注

    關(guān)注

    2293

    文章

    11032

    瀏覽量

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

    關(guān)注

    0

    文章

    84

    瀏覽量

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

    關(guān)注

    1

    文章

    57

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

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

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

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

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

    延時(shí)繼電器應(yīng)用場(chǎng)景

    延時(shí)繼電器是一種在電氣系統(tǒng)中廣泛應(yīng)用的控制元件,通過(guò)引入延時(shí)功能,實(shí)現(xiàn)了在電路中定時(shí)閉合或斷開(kāi)控制的重要任務(wù)。 延時(shí)繼電器的工作原理,基于一個(gè)或多個(gè)可調(diào)的計(jì)時(shí)器電路,2路/4路/8路電路與繼電器相連
    的頭像 發(fā)表于 01-16 16:27 ?650次閱讀

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

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

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

    再請(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

    FPGA延時(shí)Verilog HDL實(shí)現(xiàn)

    可以在任意時(shí)刻啟動(dòng),可以重復(fù)啟動(dòng),延時(shí)時(shí)長(zhǎng)可調(diào),單位可切換(ms/us),在50MHz時(shí)鐘下的延時(shí)范圍是1ms-85899ms/1us-85899us。
    的頭像 發(fā)表于 11-05 11:26 ?826次閱讀

    74ls163是幾進(jìn)制同步計(jì)數(shù)

    到9,然后回到0,形成一個(gè)循環(huán)。 以下是關(guān)于74LS163的一些基本信息: 功能 :74LS163 是一個(gè)同步計(jì)數(shù)器,意味著所有的計(jì)數(shù)位同時(shí)更新。它通常用于需要精確控制計(jì)數(shù)序列的應(yīng)用中
    的頭像 發(fā)表于 10-18 13:54 ?2990次閱讀

    求助,關(guān)于TLV320AIC3254程序的延時(shí)問(wèn)題求解

    //# //# Initialize the device through software reset //w 30 01 01 IIC_Write(0x01,0x01); 之后是否需要延時(shí)?我看過(guò)其它程序,有的有延時(shí),有的沒(méi)有延時(shí)
    發(fā)表于 10-12 08:12

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

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

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

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

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

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

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

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

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

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

    揭秘:?jiǎn)纹瑱C(jī)硬件與軟件延時(shí)之大不同!

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