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

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

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

GD32對Timer定時器原理的詳細(xì)講解

開山師傅 ? 來源:嵌入式應(yīng)用開發(fā) ? 作者:嵌入式應(yīng)用開發(fā) ? 2022-04-22 17:02 ? 次閱讀

GD32 Timr定時器看起來比較復(fù)雜啊。一看GD32E10x 的SPEC:一個高級定時器,三個通用定時器,還有一個基本定時器。

項目上想用來做分時處理程序都不知道用哪個?

就用通用的定時器 timer1

一起看下時鐘樹,如下圖所示:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdrdW5oZW5yeQ==,size_16,color_FFFFFF,t_70GD32時鐘樹部分硬件展示

TIMER1的時鐘是CK_TIMER1,要提供CK_TIMER1需要TIMER1 enable并且需要提供具體的時鐘

具體的時鐘

if(APB1 prescale = 1 ) x 1 else x 2

我們的CK_SYS時鐘(系統(tǒng)時鐘)經(jīng)過Prescaler之后最大頻率是CK_AHB(120MHz)

然后經(jīng)過預(yù)分頻,APB1頻率最大到60MHz,如果預(yù)分頻系數(shù)是1的話,則提供到TIMER的頻率是x2。

也就是60*2 = 120MHz

所以TIMER1的時鐘就用基于120MHz去分頻

我想每200ms 獲取一次timer1的中斷。改怎么辦?

有兩個參數(shù)可以一起去實現(xiàn)這個功能。

1個事TIMER的prescale 可以先把這個120MHz分頻,比如我分頻為1MHz,那么prescale就是120,不過這里timer_initpara.prescaler不能設(shè)置為120,要設(shè)置為119.

因為具體的計算方式是120MHz/(prescaler+1)

這樣拿到了1MHz的clock.那獲取每200ms的中斷再要做什么呢?

這里有reload 參數(shù)timer_initpara.period ,官方成為“TIMER counter auto reload register”

這個reload參數(shù)意思是:當(dāng)計數(shù)計到period參數(shù)的時候就做一次更新,從0開始重新計算,中斷就產(chǎn)生一次。

前面1MHz 意思是1s 可以計數(shù)1000 000次。也就是1ms 可以計數(shù)1000次,我需要200ms更新一次,那就說我需要計數(shù) 200 * 1000,所以reload就是200 * 1000 = 200000

timer_initpara.period 就是寫為200000

審核編輯:符乾江

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

    關(guān)注

    23

    文章

    3227

    瀏覽量

    114146
  • 時鐘樹
    +關(guān)注

    關(guān)注

    0

    文章

    53

    瀏覽量

    10722
收藏 人收藏

    評論

    相關(guān)推薦

    GD32 MCU入門教程】GD32 MCU GPIO 結(jié)構(gòu)與使用注意事項

    本文是專門為基于GD32 MCU開發(fā)的工程設(shè)計人員提供,主要介紹了GPIO的功能配置、內(nèi)部結(jié)構(gòu)以及在不同場景使用時的注意事項,旨在幫助GD32 MCU開發(fā)者優(yōu)化對通用型輸入輸出端口(GPIO)的使用,正確快速的使用GD32 MC
    的頭像 發(fā)表于 09-07 10:34 ?415次閱讀
    【<b class='flag-5'>GD32</b> MCU入門教程】<b class='flag-5'>GD32</b> MCU GPIO 結(jié)構(gòu)與使用注意事項

    GD32 MCU 入門教程】GD32 MCU FPU 使用方法

    GD32 MCU FPU 使用方法
    的頭像 發(fā)表于 08-25 09:24 ?322次閱讀
    【<b class='flag-5'>GD32</b> MCU 入門教程】<b class='flag-5'>GD32</b> MCU FPU 使用方法

    GD32如何替換STM32

    GD32替換Stm32注意事項
    發(fā)表于 08-23 11:31 ?3次下載

    GD32 MCU 入門教程】GD32 MCU 常見外設(shè)介紹(12)FMC 模塊介紹

    閃存控制(FMC),提供了片上閃存需要的所有功能。FMC 也提供了頁擦除,整片擦除,以及32 位整字或 16 位半字編程閃存等操作。 GD32 MCU 支持不同類型編程的具體說明如下表 GD32 MCU 不同系列編程區(qū)別所示。
    的頭像 發(fā)表于 08-21 09:56 ?830次閱讀
    <b class='flag-5'>GD32</b> MCU 入門教程】<b class='flag-5'>GD32</b> MCU 常見外設(shè)介紹(12)FMC 模塊介紹

    GD32L233移植FreeRTOS,用定時器2做延時函數(shù)在線調(diào)試時無法進(jìn)入TIMER2的中斷服務(wù)函數(shù),怎么解決?

    GD32L233移植FreeRTOS,用定時器2做延時函數(shù)在線調(diào)試發(fā)現(xiàn)無法進(jìn)入TIMER2的中斷服務(wù)函數(shù)。
    發(fā)表于 07-26 06:39

    GD32E230C8T6高級定時器timer0無法正常輸出PWM波形的原因?

    原本想用高級定時器的中央對齊計數(shù)模式來輸出SPWM波,但是TIMER0的CH0,CH1等口,都無法正常輸出PWM波形,換成普通定時器就可以了,STM32里對于高級定時器輸出PWM波形,
    發(fā)表于 07-26 06:34

    鴻蒙開發(fā)系統(tǒng)基礎(chǔ)能力:Timer定時器

    設(shè)置一個定時器,該定時器定時器到期后執(zhí)行一個函數(shù)。
    的頭像 發(fā)表于 06-28 11:33 ?706次閱讀
    鴻蒙開發(fā)系統(tǒng)基礎(chǔ)能力:<b class='flag-5'>Timer</b><b class='flag-5'>定時器</b>

    如何排查GD32 MCU復(fù)位是由哪個復(fù)位源導(dǎo)致的?

    上期為大家講解GD32 MCU復(fù)位包括電源復(fù)位和系統(tǒng)復(fù)位,其中系統(tǒng)復(fù)位還包括獨立看門狗復(fù)位、內(nèi)核軟復(fù)位、窗口看門狗復(fù)位等,在一個GD32系統(tǒng)中,如果莫名其妙產(chǎn)生了MCU復(fù)位,如何排查具體是由哪個復(fù)位源導(dǎo)致的呢?
    的頭像 發(fā)表于 02-03 09:46 ?1572次閱讀
    如何排查<b class='flag-5'>GD32</b> MCU復(fù)位是由哪個復(fù)位源導(dǎo)致的?

    GD32 Timer定時器周期時間計算公式#GD32 #單片機(jī) #定時器

    單片機(jī)mcu
    聚沃科技
    發(fā)布于 :2024年01月23日 09:37:24

    GD32 Timer定時器周期時間計算公式

    有小伙伴反饋GD32 Timer定時器的周期時間不知如何計算,今天就來安排。
    的頭像 發(fā)表于 01-22 09:53 ?2395次閱讀
    <b class='flag-5'>GD32</b> <b class='flag-5'>Timer</b><b class='flag-5'>定時器</b>周期時間計算公式

    GD32 MCU的選項字節(jié)是什么?

    GD32 MCU的選項字節(jié)是什么,有什么功能呢?選項字節(jié)被誤篡改如何回復(fù)?
    的頭像 發(fā)表于 01-17 09:42 ?1112次閱讀
    <b class='flag-5'>GD32</b> MCU的選項字節(jié)是什么?

    AWTK 開源串口屏開發(fā)(6) - 定時器的用法

    中,可以給每個控件(包括窗口)創(chuàng)建一個定時器定時器到點后觸發(fā)v-on:timer事件。在AWTK串口屏中,提供了6個定時器相關(guān)函數(shù):start_t
    的頭像 發(fā)表于 01-13 08:24 ?483次閱讀
    AWTK 開源串口屏開發(fā)(6) - <b class='flag-5'>定時器</b>的用法

    GD32和STM32有何區(qū)別?GD32如何替換STM32呢?

    GD32和STM32有何區(qū)別?GD32如何替換STM32呢? GD32和STM32是兩種不同的微控制系列,一般被用于嵌入式系統(tǒng)開發(fā)。GD32
    的頭像 發(fā)表于 11-22 18:18 ?5045次閱讀

    CKS32F4xx系列產(chǎn)品Timer的基本使用方法-定時器脈沖計數(shù)

    CKS32F4xx系列產(chǎn)品Timer的基本使用方法-定時器脈沖計數(shù)
    的頭像 發(fā)表于 11-09 17:38 ?957次閱讀
    CKS32F4xx系列產(chǎn)品<b class='flag-5'>Timer</b>的基本使用方法-<b class='flag-5'>定時器</b>脈沖計數(shù)

    定時器如何實現(xiàn)定時任務(wù)

    1.1、單次定時任務(wù)實現(xiàn) boost 的asio庫里有幾個定時器,老的有 deadline_timer , 還有三個可配合 C++11 的 chrono
    的頭像 發(fā)表于 11-09 17:20 ?787次閱讀