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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

關于STM32的計數與延時

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

Ⅰ關于STM32的計數和延時

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

精確延時一般使用定時器TIM即可實現。當然,是否精確,取決于你的主頻(也就是晶振)是否準確,如果主頻精確,那么實現的延時也一定精確。

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

總結:想要TIM定時器實現高精確的延時,就需要高精度的晶振。主頻精確,那么延時就精確。

ⅡSTM32的TIM定時器

STM32的定時器有3類:

高級定時器Advanced control Timer

通用定時器General purpose Timer

基本定時器BasicTimer

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

高級定時器

通用定時器

基本定時器

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

重要提示:

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

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

ⅢSTM32定時器計數延時原理

上面3種定時器(高級、通用和基本)都能實現計數延時的功能,我們以最簡單的基本定時器為例,還是參看著結構圖來說明:

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

2.分頻CK_PSC之后就是計數器CK_CNT的計數頻率。

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

3.實現1us計數:

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

代碼分析:

紅定義

//計數時鐘(相當于1秒鐘計數10M次個脈沖) #define TIM6_COUNTER_CLOCK 10000000 //預分頻值 #define TIM6_PRESCALER_VALUE (SystemCoreClock/2/TIM6_COUNTER_CLOCK - 1) //定時周期(計數滿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; //向上計數模式 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); //等待計數完成 TIM_ClearFlag(TIM6, TIM_FLAG_Update); //清除標志 } TIM_Cmd(TIM6, DISABLE); //關閉定時器 }

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

提示:

1.這類阻塞延時,僅供學習其原理使用,請結合實際項目修改代碼。

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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 延時
    +關注

    關注

    0

    文章

    108

    瀏覽量

    25845
  • STM32
    +關注

    關注

    2290

    文章

    11018

    瀏覽量

    362966
  • Tim
    Tim
    +關注

    關注

    0

    文章

    84

    瀏覽量

    18269
  • 計數
    +關注

    關注

    1

    文章

    57

    瀏覽量

    20329
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    STM32F030內部晶振怎么設置,內部晶振是延時函數怎么設置?

    STM32F030內部晶振怎么設置,內部晶振是延時函數怎么設置 使用STM32F030時沒使用內部晶振怎么設置,使用內部晶振時延時函數怎么寫?謝謝大俠
    發表于 04-23 07:45

    使用STM32F030時沒使用內部晶振怎么設置,使用內部晶振時延時函數怎么寫?

    STM32F030內部晶振怎么設置,內部晶振是延時函數怎么設置 使用STM32F030時沒使用內部晶振怎么設置,使用內部晶振時延時函數怎么寫?謝謝大俠
    發表于 03-07 08:13

    延時繼電器功能匯總與應用

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

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

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

    關于ADS1120延時的疑問求解

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

    FPGA延時Verilog HDL實現

    可以在任意時刻啟動,可以重復啟動,延時時長可調,單位可切換(ms/us),在50MHz時鐘下的延時范圍是1ms-85899ms/1us-85899us。
    的頭像 發表于 11-05 11:26 ?764次閱讀

    74ls163是幾進制同步計數

    到9,然后回到0,形成一個循環。 以下是關于74LS163的一些基本信息: 功能 :74LS163 是一個同步計數器,意味著所有的計數位同時更新。它通常用于需要精確控制計數序列的應用中
    的頭像 發表于 10-18 13:54 ?2735次閱讀

    延時開關需要零線嗎為什么

    延時開關是一種常見的電氣控制元件,廣泛應用于各種電氣設備和系統中。它的作用是在電路中引入一定的延時,以實現對電路的控制和保護。延時開關的種類很多,包括機械式延時開關、電子式
    的頭像 發表于 08-19 15:56 ?979次閱讀

    延時開關接線技巧與注意事項有哪些

    延時開關的接線技巧與注意事項是確保延時開關正確安裝和穩定運行的關鍵。 一、延時開關接線技巧 1. 理解延時開關的基本結構 延時開關通常包含多
    的頭像 發表于 08-19 15:54 ?2243次閱讀

    延時開關改手動開關怎么接線

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

    延時開關怎么調時間長短

    延時開關是一種常見的電子控制設備,廣泛應用于各種場合,如照明、空調、風扇等。它可以根據用戶的需求,設定一定的延時時間,實現自動控制。 一、延時開關的工作原理 延時開關的基本組成
    的頭像 發表于 08-19 15:46 ?4605次閱讀

    延時開關上l和a是什么意思

    延時開關是一種常見的電子控制元件,廣泛應用于各種電子設備和系統中。它可以實現對電路的自動控制,使電路在一定的延時后自動接通或斷開。在延時開關的標識中,L和A通常代表不同的意義。 一、延時
    的頭像 發表于 08-19 15:45 ?7945次閱讀

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

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

    斷電延時繼電器的實際應用

    斷電延時繼電器作為一種常見的電器設備,在現代生活中有著廣泛的應用。它通過控制電路的開關時間來實現電器設備的延時關閉,從而達到省電、安全等目的。以下將結合多個應用實例,詳細闡述斷電延時繼電器的實際應用。
    的頭像 發表于 07-17 16:51 ?2118次閱讀

    延時繼電器工作原理及應用實例

    延時繼電器是一種電氣控制元件,它能夠在接收到啟動信號后,并非立即執行動作(如閉合或斷開觸點),而是在經過預設的時間延遲后才執行相應操作。延時繼電器廣泛應用于各類自動控制系統和保護系統中,實現時間控制
    的頭像 發表于 06-23 11:54 ?5240次閱讀
    主站蜘蛛池模板: 男啪女色黄无遮挡免费视频 | 国产高清免费在线 | 播色屋 | 狠狠干天天 | 国产欧美精品午夜在线播放 | 婷婷色在线视频 | 久久综合97色综合网 | 免费a级午夜绝情美女视频 免费jlzzjlzz在线播放视频 | 天天操天天操天天操 | 狠狠色狠狠色综合婷婷tag | 丁香在线视频 | 五月天天 | 第四色激情网 | 精品国产麻豆免费人成网站 | 色综合久久久高清综合久久久 | 性瘾高h姚蕊全文免费阅读 性做久久久久 | 免费高清特黄a 大片 | 日韩精品系列产品 | 啊用力太猛了啊好深视频免费 | 国产欧美精品午夜在线播放 | 哪里可以看免费毛片 | 午夜啪啪网站 | 日韩精品一级毛片 | 中文字幕亚洲一区二区v@在线 | 婷婷成人丁香五月综合激情 | 欧洲天堂网 | 最好免费高清视频观看韩国 | 人人干干人人 | 视频免费1区二区三区 | 黄色一级毛片网站 | 欧美一区二区三区综合色视频 | 一区二区三区四区精品 | 就要干就要操 | 国产老师的丝袜在线看 | 色免费网站 | 五月激情丁香网 | 91福利免费视频 | 国产视频第一页 | 久久本道综合色狠狠五月 | 久久综合九色综合网站 | 快播久久|