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

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

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

敏矽微電子Cortex-M0學習筆記08——基本定時器詳解

jf_pJlTbmA9 ? 來源:敏矽MCU ? 作者:敏矽MCU ? 2023-09-26 17:13 ? 次閱讀

1、ME32F030基本定時器簡介

ME32F030內(nèi)置 4 個基本功能的 16 位定時器/計數(shù)器。 定時器/計數(shù)器工作時鐘由 SYSAHBCLKDIV 寄存器控制。關閉 SYSAHBCLKDIV 寄存器中定時器/計數(shù)器的時鐘供給可節(jié)省系統(tǒng)功耗。主要功能如下:

? 可預置分頻的 16 位定時器/計數(shù)器

? 1 個 16 位匹配寄存器:

–可產(chǎn)生中斷

–停止定時器

–對定時器復位

16 位基本型定時器/計數(shù)器模塊框圖如下圖所示:

wKgZomUD0iGAPqQrAAD5znpO1W0238.png

圖1 基本定時器結構圖

為了便于理解,可以將基本定時器框圖分為4個功能單元。

①:預分頻計數(shù)單元,由PRESCALE COUNTER (PC) 和 PRESCALE REGISTER (PR)組成,預分頻計數(shù)器(PC)會在每個 PCLK 時鐘上遞增計數(shù)。達到設定的預分頻值后,定時器計數(shù)器就會加1,而預分頻值就是由PR寄存器決定的。

②:定時器計數(shù)單元,由TIMER COUNTER (TC) 和 TIMER CONTROL REGISTER (TCR)組成,定時器控制寄存器TCR決定計數(shù)器TC是否啟用。預分頻計數(shù)器(PC)溢出后,定時器計數(shù)器(TC)加1,達到設定的匹配值MR0之后可以根據(jù)設置產(chǎn)生中斷等行為。

③:定時器匹配單元:該單元只有一個MATCH REGISTER0(MR0),它決定著定時器計數(shù)器TC的匹配值。

④:定時器控制單元,由MATCH CONTROL REGISTER (MCR) 和 INTERRUPT REGISTER (IR)組成,二者共同作用,控制著定時器的主要功能和參數(shù)。

2、ME32F030基本定時器寄存器

在簡介中,我們介紹了基本定時器的模塊框圖,其實每個功能模塊都有對應的寄存器來實現(xiàn)其功能?;径〞r器的寄存器列表如圖所示:

wKgaomUD0iKAMUrkAAHytoa_HG4233.png

2-1 中斷寄存器

中斷寄存器包含用于匹配中斷的位。如果有中斷產(chǎn)生, IR 中的相應位為高電平。否則,該位為低電平。向對應的 IR 位寫邏 輯 1 會使中斷復位。寫 0 無效。

2-2 定時器控制寄存器

定時器控制寄存器用于控制計數(shù)器/定時器的操作。它主要控制著計數(shù)器的使能和復位,具體的操作如圖所示:

wKgZomUD0iSAffthAAEopvoottI547.png

圖3 控制寄存器

2-3 定時器計數(shù)寄存器

當預分頻器計數(shù)器達到其 PC 數(shù)值時, 16 位定時器計數(shù)器會遞增計數(shù)。如果 TC 在到達計數(shù)器上限之前沒有復位,它將一直 計數(shù)到 0x0000 FFFF 然后翻轉到 0x0000 0000。該事件不會產(chǎn)生中斷,如果需要,可使用匹配寄存器檢測溢出。

2-4 預分頻寄存器

16 位預分頻寄存器指定預分頻計數(shù)器的最大值。當預分頻計數(shù)器計數(shù)到此值后,會從0開始重新計數(shù)。

2-5 預分頻計數(shù)寄存器

16 位預分頻計數(shù)器用某個常量來控制 PCLK 的分頻,再使其輸入到定時器計數(shù)器。它所控制的是定時器分辨率與最大時間之間的關系,從而能防止定時器溢流。預分頻計數(shù)器會在每個 PCLK 時鐘上遞增計數(shù)。當預分頻計數(shù)器的計數(shù)達到預分頻寄存器中存儲的值時,定時器計數(shù)器將遞增計數(shù),并且在下一個 PCLK 時鐘上對預分頻計數(shù)器復位。這將使得 TC 當 PR = 0 時在每個 PCLK 上遞增計數(shù),當 PR = 1 時,在每 2 個 PCLK 上遞增計數(shù),依次類推。.

2-6 匹配控制寄存器

匹配控制寄存器用于控制當其中一個匹配寄存器的值與定時器計數(shù)器的值匹配時應執(zhí)行的操作。功能如下所示。

位0:決定著計數(shù)器TC與匹配值相等后,中斷是否使能。

位1:MR0與TC匹配時,決定TC是否復位。如果選擇復位,TC則會清0重新計數(shù),這樣就會形成一個固定時間的計數(shù)周期。

位2:MR0與TC匹配時,決定TC是否停止。如果置1選擇使能,TC則不再會計數(shù)。這樣就是個單次周期的計數(shù)了。如果想要周期性循環(huán)計數(shù),那么就需要置0(默認)禁止。

wKgZomUD0iWACFs0AAERNVcBybY939.png

圖4 匹配控制寄存器

2-7 匹配寄存器

匹配寄存器的值會不斷地與定時器計數(shù)器值進行比較。當兩個值相等時,自動觸發(fā)相應操作。這些操作包括產(chǎn)生中斷、復位定時器計數(shù)器或停止定時器。所有操作均由 MCR 寄存器中的設置控制。

3、基本定時器驅動函數(shù)

在例程LIB->common->Drivers->Source文件夾內(nèi)有timer.c文件,這個就是提供的定時器庫程序,里面除了基本定時器的驅動函數(shù),還包括高級定時器、PWM輸出等功能函數(shù),本章節(jié)先對基本定時器的函數(shù)進行講解。

3-1 基本定時器初始化

ct:要初始化的定時器模塊,可選TIM0、TIM1、TIM2、TIM3。

tickpersecond:預分頻系數(shù)。

voidTIM0_Init(TIM0_Type*ct,uint32_ttickpersecond)
{
if(ct==TIM0)
{
SYSCON->SYSAHBCLKCTRL_b.TIM0_CLK=1;//使能定時器時鐘
SYSCON->PRESETCTRL_b.TIM0_RST_N=0;//復位定時器
SYSCON->PRESETCTRL_b.TIM0_RST_N=1;
}

elseif(ct==TIM1)
{

SYSCON->SYSAHBCLKCTRL_b.TIM1_CLK=1;

SYSCON->PRESETCTRL_b.TIM1_RST_N=0;

SYSCON->PRESETCTRL_b.TIM1_RST_N=1;
}

elseif(ct==TIM2)
{
SYSCON->SYSAHBCLKCTRL_b.TIM2_CLK=1;

SYSCON->PRESETCTRL_b.TIM2_RST_N=0;

SYSCON->PRESETCTRL_b.TIM2_RST_N=1;
}

elseif(ct==TIM3)
{

SYSCON->SYSAHBCLKCTRL_b.TIM3_CLK=1;

SYSCON->PRESETCTRL_b.TIM3_RST_N=0;

SYSCON->PRESETCTRL_b.TIM3_RST_N=1;

}elsereturn;

//設置預分頻系數(shù)
if(tickpersecond>SystemCoreClock)
tickpersecond=SystemCoreClock;
ct->PR_b.PRVAL=SystemCoreClock/tickpersecond-1;
return;
}

3-2 設置匹配寄存器

這個函數(shù)用于設置定時器的匹配值,以及達到匹配值之后的行為。

Ct:要設置的定時器模塊,可選TIM0、TIM1、TIM2、TIM3。

Ticks:要寫入的計數(shù)器匹配值。

Action: 觸發(fā)中斷 TIM_MATCH_TRIGGER_INT

復位計數(shù)器 TIM_MATCH_RESET_COUNTER

停止計數(shù)器 TIM_MATCH_STOP_COUNTER

voidTIM0_ConfigMatch(TIM0_Type*ct,uint16_tticks,uint8_taction)
{
ct->MR0_b.MATCH=ticks-1;
ct->MCR=action;
return;
}

3-3 設置預分頻計數(shù)器值

voidTIM0_SetTimerCounter(TIM0_Type*ct,uint16_ttick)
{
ct->PC_b.PCVAL=tick;
return;
}

3-4 復位預分頻計數(shù)器值

voidTIM0_ResetTimerCounter(TIM0_Type*ct)
{
ct->PC_b.PCVAL=0;
return;
}

來源:敏矽MCU

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

    關注

    31

    文章

    5294

    瀏覽量

    119816
  • 計數(shù)器
    +關注

    關注

    32

    文章

    2253

    瀏覽量

    94287
  • 定時器
    +關注

    關注

    23

    文章

    3231

    瀏覽量

    114329
  • Cortex-M0
    +關注

    關注

    4

    文章

    124

    瀏覽量

    38617
收藏 人收藏

    評論

    相關推薦

    SAR ADC 原理與微ME32系列32位微控制ADC應用指南詳解

    1、概述 ME32 系列是內(nèi)嵌 ARM Cortex? M0 核的 32 位微控制。該系列控制
    的頭像 發(fā)表于 10-17 10:57 ?1045次閱讀
    SAR ADC 原理與<b class='flag-5'>敏</b><b class='flag-5'>矽</b>微ME32系列32位微控制<b class='flag-5'>器</b>ADC應用指南<b class='flag-5'>詳解</b>

    cortex-m0學習資料

    本帖最后由 jheng 于 2015-4-9 21:54 編輯 cortex-m0學習
    發(fā)表于 04-09 21:48

    【ARM Cortex-M0視頻教程 By SmartMcu】【系統(tǒng)定時器SysTick】

    本帖最后由 rejoice818 于 2015-5-19 13:58 編輯 ARM Cortex-M0視頻教程- 系統(tǒng)定時器SysTick【SmartMcu】視頻地址:http://pan.baidu.com/s/1eQngXSQ
    發(fā)表于 05-19 13:50

    靈動微電子獲得ARM? Cortex? -M0Cortex? -M3無限次授權

    次使用ARM? Cortex?-M0Cortex?-M3 CPU內(nèi)核及IP工具包?;谠搮f(xié)議,靈動微電子可以在協(xié)議范圍內(nèi)不受授權次數(shù)限制的
    發(fā)表于 10-18 14:20

    深入淺出Cortex-M0學習資料

    深入淺出Cortex-M0學習資料
    發(fā)表于 06-18 10:50 ?0次下載
    深入淺出<b class='flag-5'>Cortex-M0</b><b class='flag-5'>學習</b>資料

    cortex-m0加密

    cortex-m0加密
    發(fā)表于 10-13 15:08 ?5次下載
    <b class='flag-5'>cortex-m0</b>加密

    MCU學習筆記_ARM Cortex M0_簡介

    MCU學習筆記ARM Cortex M01. RM的CPU core 的基本概念2. ARM Cortex
    發(fā)表于 10-28 11:21 ?15次下載
    MCU<b class='flag-5'>學習</b><b class='flag-5'>筆記</b>_ARM <b class='flag-5'>Cortex</b> <b class='flag-5'>M0</b>_簡介

    基于ARM Cortex-M0核的MCU設計及應用

    知網(wǎng)鏈接:基于ARM Cortex-M0核的MCU設計及應用
    發(fā)表于 11-05 15:35 ?18次下載
    基于ARM <b class='flag-5'>Cortex-M0</b>核的MCU設計及應用

    微電子Cortex-M0學習筆記07——串口通信詳解

    微電子Cortex-M0學習筆記07——串口通信詳解
    的頭像 發(fā)表于 09-26 17:11 ?1053次閱讀
    <b class='flag-5'>敏</b><b class='flag-5'>矽</b><b class='flag-5'>微電子</b><b class='flag-5'>Cortex-M0</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>07——串口通信<b class='flag-5'>詳解</b>

    微電子Cortex-M0學習筆記06——段式LCD液晶實例

    微電子Cortex-M0學習筆記06——段式LCD液晶實例
    的頭像 發(fā)表于 09-26 17:10 ?687次閱讀
    <b class='flag-5'>敏</b><b class='flag-5'>矽</b><b class='flag-5'>微電子</b><b class='flag-5'>Cortex-M0</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>06——段式LCD液晶實例

    微電子Cortex-M0學習筆記05——端口外部中斷實例

    微電子Cortex-M0學習筆記05——端口外部中斷實例
    的頭像 發(fā)表于 09-26 17:10 ?704次閱讀
    <b class='flag-5'>敏</b><b class='flag-5'>矽</b><b class='flag-5'>微電子</b><b class='flag-5'>Cortex-M0</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>05——端口外部中斷實例

    微電子Cortex-M0學習筆記04——GPIO詳解及應用實例

    微電子Cortex-M0學習筆記04——GPIO詳解
    的頭像 發(fā)表于 09-26 17:07 ?979次閱讀
    <b class='flag-5'>敏</b><b class='flag-5'>矽</b><b class='flag-5'>微電子</b><b class='flag-5'>Cortex-M0</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>04——GPIO<b class='flag-5'>詳解</b>及應用實例

    微電子Cortex-M0學習筆記03——時鐘系統(tǒng)設計例程

    微電子Cortex-M0學習筆記03——時鐘系統(tǒng)設計例程
    的頭像 發(fā)表于 09-26 17:06 ?873次閱讀
    <b class='flag-5'>敏</b><b class='flag-5'>矽</b><b class='flag-5'>微電子</b><b class='flag-5'>Cortex-M0</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>03——時鐘系統(tǒng)設計例程

    微電子Cortex-M0學習筆記02——Cortex-M0開發(fā)環(huán)境的建立及調試

    微電子Cortex-M0學習筆記02——Cortex-M
    的頭像 發(fā)表于 09-26 17:05 ?1494次閱讀
    <b class='flag-5'>敏</b><b class='flag-5'>矽</b><b class='flag-5'>微電子</b><b class='flag-5'>Cortex-M0</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>02——<b class='flag-5'>Cortex-M0</b>開發(fā)環(huán)境的建立及調試

    微電子Cortex-M0學習筆記01——芯片簡介

    微電子Cortex-M0學習筆記01——芯片簡介
    的頭像 發(fā)表于 09-26 17:03 ?829次閱讀
    <b class='flag-5'>敏</b><b class='flag-5'>矽</b><b class='flag-5'>微電子</b><b class='flag-5'>Cortex-M0</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>01——芯片簡介