欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

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

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

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

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

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

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

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

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

ⅡSTM32的TIM定時器

STM32的定時器有3類:

高級定時器Advanced control Timer

通用定時器General purpose Timer

基本定時器BasicTimer

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

高級定時器

通用定時器

基本定時器

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

重要提示:

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

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

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

上面3種定時器(高級、通用和基本)都能實(shí)現(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.實(shí)現(xiàn)1us計數(shù):

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

代碼分析:

紅定義

//計數(shù)時鐘(相當(dāng)于1秒鐘計數(shù)10M次個脈沖) #define TIM6_COUNTER_CLOCK 10000000 //預(yù)分頻值 #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; //預(yù)分頻值 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); //清除標(biāo)志 } TIM_Cmd(TIM6, DISABLE); //關(guān)閉定時器 }

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

提示:

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

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

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

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

    關(guān)注

    0

    文章

    107

    瀏覽量

    25590
  • STM32
    +關(guān)注

    關(guān)注

    2273

    文章

    10926

    瀏覽量

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

    關(guān)注

    0

    文章

    81

    瀏覽量

    17971
  • 計數(shù)
    +關(guān)注

    關(guān)注

    1

    文章

    57

    瀏覽量

    20153
收藏 人收藏

    評論

    相關(guān)推薦

    使用ADC08D500對模擬信號采樣時,遇到的延時疑問求解

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    (); while((HAL_GetTick() - tickstart) < Delay) { } } 這里使用這個延時函數(shù)有沒有這種情況,當(dāng)HAL_GetTick()的計數(shù)正好要溢出時,是不是延時就不準(zhǔn)了?
    發(fā)表于 05-09 06:20

    FreeRtos能否直接讀取Rtos的系統(tǒng)時鐘計數(shù)器來實(shí)現(xiàn)延時統(tǒng)計,改如何讀取呢?

    關(guān)于200~300uS的延時 1 能否直接讀取Rtos的 系統(tǒng)時鐘計數(shù)器來 實(shí)現(xiàn)延時統(tǒng)計,改如何讀取呢? 2 通過獨(dú)立的定時器中斷來實(shí)現(xiàn),這樣感覺有點(diǎn)麻煩,好處是比較嚴(yán)謹(jǐn),但是代碼
    發(fā)表于 04-29 08:40

    STM32F407以太網(wǎng)突然延時變高導(dǎo)致死機(jī)的原因?怎么解決?

    MCU芯片采用STM32F407,以太網(wǎng)芯片采用DP83848,STM32F407作為服務(wù)端,PC作為客戶端訪問,跑的modbus協(xié)議,該開始通訊時,一切正常,PING延時也是<1ms
    發(fā)表于 04-28 06:37

    stm32比較器輸出到timer_etr沒有計數(shù)是為什么?

    請教有人搞過STM32L比較器輸出內(nèi)部配到到timer_etr的計數(shù)嗎。比較器的比較輸出已經(jīng)搞通,比較中斷都有,配置為外部輸出也有;timer配置已經(jīng)啟動,時鐘已經(jīng)打開,timer中的renmap已經(jīng)定位到comp1輸出。就是沒有計數(shù)
    發(fā)表于 04-23 06:39

    stm32f303進(jìn)行ad采集,采集完需要延時1000ms,請問stm32f303的延時程序怎么寫?

    各位大神。最近用stm32f303進(jìn)行ad采集,采集完需要延時1000ms,請教一下f3的延時程序怎么寫,多謝了
    發(fā)表于 04-10 07:51

    STM32蜂鳴器音樂播放實(shí)例教程

    開啟定時器TIM7,是為了寫延時函數(shù)HAL_Delay_us()。具體過程請移步此文:STM32的HAL庫實(shí)現(xiàn)自定義延時函數(shù)delay_us(),文末附代碼。
    發(fā)表于 03-26 14:19 ?2305次閱讀
    <b class='flag-5'>STM32</b>蜂鳴器音樂播放實(shí)例教程

    STM32F407在HAL庫下使用SPI通過DMA發(fā)送數(shù)據(jù)時,如何獲取DMA發(fā)送計數(shù)

    關(guān)于STM32F407在HAL庫下使用SPI通過DMA發(fā)送數(shù)據(jù)如何獲取DMA發(fā)送計數(shù),變量名DMA_SxNDTR 計數(shù)器在HAL庫工程里查不到。 ●具體情況是我想使用SPI通過DMA
    發(fā)表于 03-26 06:07

    關(guān)于STM32 DMAMUX模塊具體的應(yīng)用示例代碼

    有人通過公眾號微信留言,詢問是否有關(guān)于STM32 DMAMUX模塊具體的應(yīng)用示例代碼。同時,個人也發(fā)現(xiàn),雖然STM32片內(nèi)的DMAMUX不是什么新模塊,似乎還是很多人并不太熟悉。這里借機(jī)聊聊這方面的內(nèi)容,重點(diǎn)演示相關(guān)功能的實(shí)現(xiàn),
    的頭像 發(fā)表于 03-25 09:15 ?2599次閱讀
    <b class='flag-5'>關(guān)于</b><b class='flag-5'>STM32</b> DMAMUX模塊具體的應(yīng)用示例代碼