chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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ù)圈 ? 來(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位之分,詳見數(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í)的功能,我們以最簡(jiǎn)單的基本定時(shí)器為例,還是參看著結(jié)構(gòu)圖來(lái)說(shuō)明:

1.來(lái)自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í)器 }

以上代碼,之前有分享過(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)容及配圖由入駐作者撰寫或者入駐合作網(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

    文章

    110

    瀏覽量

    26360
  • STM32
    +關(guān)注

    關(guān)注

    2309

    文章

    11162

    瀏覽量

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

    關(guān)注

    0

    文章

    85

    瀏覽量

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

    關(guān)注

    1

    文章

    58

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    求助STM32H563關(guān)于LWESP配置UART問(wèn)題

    求助STM32H563關(guān)于LWESP配置UART問(wèn)題,信息如下: Uart GPIO:PA9 USART1_TXPA10 USART1_RX 參考文章:https://blog.csdn.net
    發(fā)表于 01-27 14:02

    LAT1183+高精度定時(shí)器中 single-shot 計(jì)數(shù)模式不工作應(yīng)用筆記

    客戶使用 STM32G474 的高精度定時(shí)器,基于 CubeMX 進(jìn)行外設(shè)配置與代碼生成,將某個(gè)子定時(shí)器的計(jì)數(shù)方式設(shè)置為 retriggerable single shot 方式,發(fā)現(xiàn)該子定時(shí)器無(wú)
    發(fā)表于 01-11 17:28 ?0次下載

    如何在Zephyr RTOS中實(shí)現(xiàn)延時(shí)和計(jì)時(shí)函數(shù)

    在實(shí)時(shí)操作系統(tǒng)(RTOS)中,時(shí)間管理是核心功能之一。無(wú)論是任務(wù)調(diào)度、超時(shí)控制,還是周期性事件,延時(shí)和計(jì)時(shí)機(jī)制都扮演著至關(guān)重要的角色。Zephyr RTOS作為一個(gè)輕量級(jí)、模塊化的開源系統(tǒng),提供了
    的頭像 發(fā)表于 12-26 10:32 ?5479次閱讀
    如何在Zephyr RTOS中實(shí)現(xiàn)<b class='flag-5'>延時(shí)</b>和計(jì)時(shí)函數(shù)

    交流延時(shí)電源

    交流延時(shí)電源
    的頭像 發(fā)表于 12-25 12:57 ?343次閱讀
    交流<b class='flag-5'>延時(shí)</b>電源

    Cortex-M內(nèi)核中的精確延時(shí)的方法

    )。 要實(shí)現(xiàn)延時(shí)的功能,總共涉及到三個(gè)寄存器:DEMCR 、DWT_CTRL、DWT_CYCCNT,分別用于開啟DWT功能、開啟CYCCNT及獲得系統(tǒng)時(shí)鐘計(jì)數(shù)值。 DEMCR使能DWT_CYCCNT
    發(fā)表于 11-21 07:51

    使用系統(tǒng)定時(shí)器SysTick來(lái)實(shí)現(xiàn)精確延時(shí)微秒和毫秒函數(shù)

    到 0 時(shí),將從RELOAD 寄存器中自動(dòng)重裝載定時(shí)初值,開始新一輪計(jì)數(shù)。使用內(nèi)核的SysTick定時(shí)器來(lái)實(shí)現(xiàn)延時(shí),可以不占用系統(tǒng)定時(shí)器,由于和MCU外設(shè)無(wú)關(guān),所以代碼的移植,在不同廠家的Cortex-M
    發(fā)表于 11-20 07:12

    感知再進(jìn)化,新增“觸發(fā)延時(shí)”功能!

    ——「觸發(fā)延時(shí)」正式上線!這不僅是一個(gè)功能的增加,更是對(duì)產(chǎn)品穩(wěn)定性和場(chǎng)景適用性的一次深刻優(yōu)化。一、亮點(diǎn)速覽什么是“觸發(fā)延時(shí)”功能?簡(jiǎn)單來(lái)說(shuō),“觸發(fā)延時(shí)”是指在雷達(dá)檢測(cè)到
    的頭像 發(fā)表于 11-10 11:05 ?747次閱讀
    感知再進(jìn)化,新增“觸發(fā)<b class='flag-5'>延時(shí)</b>”功能!

    如何利用蜂鳥HbirdV2-SoC自帶外設(shè)PWM進(jìn)行毫秒級(jí)的延時(shí)和計(jì)時(shí)

    ,顯然,計(jì)數(shù)16次實(shí)現(xiàn)1us延遲是極不精準(zhǔn)的。為了達(dá)到一定了精度要求,本例中僅實(shí)現(xiàn)50us的延時(shí)。 其次,TIM0的計(jì)數(shù)寄存器僅為16位,用在16MHz主時(shí)鐘對(duì)其進(jìn)行計(jì)數(shù)時(shí),最大de
    發(fā)表于 10-30 07:47

    探頭的延時(shí)介紹

    探頭的延時(shí)是指信號(hào)從被測(cè)點(diǎn)傳輸?shù)绞静ㄆ鬏斎攵说臅r(shí)間間隔,即信號(hào)經(jīng)過(guò)探頭的探針、傳輸電纜、內(nèi)部電路等路徑后,到達(dá)示波器采樣系統(tǒng)的總時(shí)間延遲,(以下討論低速信號(hào)情景,忽略示波器通道間ps級(jí)的延時(shí)誤差)。不同型號(hào)的探頭延時(shí)存在差異,尤
    的頭像 發(fā)表于 09-17 17:32 ?856次閱讀
    探頭的<b class='flag-5'>延時(shí)</b>介紹

    認(rèn)識(shí)探頭的延時(shí)

    探頭的延時(shí)是指信號(hào)從被測(cè)點(diǎn)傳輸?shù)绞静ㄆ鬏斎攵说臅r(shí)間間隔,即信號(hào)經(jīng)過(guò)探頭的探針、傳輸電纜、內(nèi)部電路等路徑后,到達(dá)示波器采樣系統(tǒng)的總時(shí)間延遲,(以下討論低速信號(hào)情景,忽略示波器通道間ps級(jí)的延時(shí)誤差
    的頭像 發(fā)表于 08-26 17:04 ?800次閱讀
    認(rèn)識(shí)探頭的<b class='flag-5'>延時(shí)</b>

    九進(jìn)制計(jì)數(shù)電路仿真設(shè)計(jì)

    九進(jìn)制計(jì)數(shù)電路仿真
    發(fā)表于 06-09 14:48 ?0次下載

    數(shù)字延時(shí)脈沖發(fā)生器的工作原理及應(yīng)用場(chǎng)景介紹

    SYN5610型數(shù)字延時(shí)脈沖發(fā)生器是一種能夠產(chǎn)生精確時(shí)間延遲和脈沖信號(hào)的電子設(shè)備,核心原理基于數(shù)字邏輯控制和定時(shí)電路,通過(guò)編程或外部觸發(fā)實(shí)現(xiàn)對(duì)脈沖信號(hào)的延遲時(shí)間、寬度、頻率等參數(shù)的精準(zhǔn)控制。其主要
    的頭像 發(fā)表于 06-03 17:22 ?679次閱讀

    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

    示波器差分探頭延時(shí)測(cè)量:從理論到工程實(shí)踐的關(guān)鍵解析

    示波器差分探頭延時(shí)的測(cè)量是高速信號(hào)分析中的重要環(huán)節(jié)。通過(guò)時(shí)域測(cè)量法或頻域測(cè)量法,可以準(zhǔn)確計(jì)算探頭的延時(shí),從而優(yōu)化測(cè)量結(jié)果。在實(shí)際應(yīng)用中,了解影響延時(shí)的因素并采取相應(yīng)措施,可以進(jìn)一步提高測(cè)量的準(zhǔn)確性和可靠性。
    的頭像 發(fā)表于 04-14 16:59 ?1003次閱讀
    示波器差分探頭<b class='flag-5'>延時(shí)</b>測(cè)量:從理論到工程實(shí)踐的關(guān)鍵解析

    STM32U083進(jìn)行外部計(jì)數(shù)只能計(jì)數(shù)8000多一點(diǎn),為什么?

    背景: 使用LPTIME1進(jìn)行計(jì)數(shù)。 LPTIMER配置如下: 時(shí)鐘配置如下: 使用過(guò)LSE;PCLK配置,計(jì)數(shù)還是一樣的 實(shí)際計(jì)數(shù)只能計(jì)數(shù)到8000多;使用信號(hào)發(fā)生器產(chǎn)生9KHz
    發(fā)表于 03-12 06:21