精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

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

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

1、ME32F030基本定時器簡介

ME32F030內置 4 個基本功能的 16 位定時器/計數器。 定時器/計數器工作時鐘由 SYSAHBCLKDIV 寄存器控制。關閉 SYSAHBCLKDIV 寄存器中定時器/計數器的時鐘供給可節省系統功耗。主要功能如下:

? 可預置分頻的 16 位定時器/計數器

? 1 個 16 位匹配寄存器:

–可產生中斷

–停止定時器

–對定時器復位

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

wKgZomUD0iGAPqQrAAD5znpO1W0238.png

圖1 基本定時器結構圖

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

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

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

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

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

2、ME32F030基本定時器寄存器

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

wKgaomUD0iKAMUrkAAHytoa_HG4233.png

2-1 中斷寄存器

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

2-2 定時器控制寄存器

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

wKgZomUD0iSAffthAAEopvoottI547.png

圖3 控制寄存器

2-3 定時器計數寄存器

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

2-4 預分頻寄存器

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

2-5 預分頻計數寄存器

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

2-6 匹配控制寄存器

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

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

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

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

wKgZomUD0iWACFs0AAERNVcBybY939.png

圖4 匹配控制寄存器

2-7 匹配寄存器

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

3、基本定時器驅動函數

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

3-1 基本定時器初始化

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

tickpersecond:預分頻系數。

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;

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

3-2 設置匹配寄存器

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

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

Ticks:要寫入的計數器匹配值。

Action: 觸發中斷 TIM_MATCH_TRIGGER_INT

復位計數器 TIM_MATCH_RESET_COUNTER

停止計數器 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 設置預分頻計數器值

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

3-4 復位預分頻計數器值

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

來源:敏矽MCU

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

    關注

    31

    文章

    5317

    瀏覽量

    120002
  • 計數器
    +關注

    關注

    32

    文章

    2253

    瀏覽量

    94351
  • 定時器
    +關注

    關注

    23

    文章

    3237

    瀏覽量

    114467
  • Cortex-M0
    +關注

    關注

    4

    文章

    124

    瀏覽量

    38637
收藏 人收藏

    評論

    相關推薦

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

    1、概述 ME32 系列是內嵌 ARM Cortex? M0 核的 32 位微控制。該系列控制
    的頭像 發表于 10-17 10:57 ?1071次閱讀
    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學習
    發表于 04-09 21:48

    【ARM Cortex-M0視頻教程 By SmartMcu】【系統定時器SysTick】

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

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

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

    深入淺出Cortex-M0學習資料

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

    cortex-m0加密

    cortex-m0加密
    發表于 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
    發表于 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設計及應用

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

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

    微電子Cortex-M0學習筆記07——串口通信詳解
    的頭像 發表于 09-26 17:11 ?1079次閱讀
    <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液晶實例
    的頭像 發表于 09-26 17:10 ?694次閱讀
    <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——端口外部中斷實例
    的頭像 發表于 09-26 17:10 ?720次閱讀
    <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詳解
    的頭像 發表于 09-26 17:07 ?1007次閱讀
    <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——時鐘系統設計例程

    微電子Cortex-M0學習筆記03——時鐘系統設計例程
    的頭像 發表于 09-26 17:06 ?894次閱讀
    <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——時鐘系統設計例程

    微電子Cortex-M0學習筆記02——Cortex-M0開發環境的建立及調試

    微電子Cortex-M0學習筆記02——Cortex-M
    的頭像 發表于 09-26 17:05 ?1523次閱讀
    <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>開發環境的建立及調試

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

    微電子Cortex-M0學習筆記01——芯片簡介
    的頭像 發表于 09-26 17:03 ?848次閱讀
    <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——芯片簡介