專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

新唐M051定時(shí)器3 周期模式測(cè)試程序

作者:huqin   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2014年09月01日   【字體:

以下是新唐M051單片機(jī)定時(shí)器3的 周期模式測(cè)試程序 成功版:

#include "SmartM_M0.h"

UINT32 i =0;
/****************************************
*函數(shù)名稱:TMR3Init
*輸    入:無(wú)
*輸    出:無(wú)
*功    能:定時(shí)器3初始化
******************************************/
VOID TMR3Init(VOID)
{
    PROTECT_REG
 (
  /* 使能TMR0時(shí)鐘源 */
     APBCLK |= TMR3_CLKEN;
  /* 選擇TMR0時(shí)鐘源為外部晶振12MHz */ 
  CLKSEL1 = (CLKSEL1 & (~TM3_CLK)) | TM0_12M; 
  /* 復(fù)位TMR3 */
  IPRSTC2 |=  TMR3_RST;
  IPRSTC2 &= ~TMR3_RST; 
  /* 選擇TMR3的工作模式為周期模式*/ 
  TCSR3 &= ~TMR_MODE;
  TCSR3 |=  MODE_PERIOD;  
  /* 溢出周期 = (Period of timer clock input) * (8-bit Prescale + 1) * (24-bit TCMP)*/
   /* 溢出周期 = (1/12MHz) * (0 + 1) * (12000*500)=500ms (0.5S)*/
  TCSR3  = TCSR3 & 0xFFFFFF01;  // 設(shè)置預(yù)分頻值 [0~255]
  TCMPR3 = 12000*500;        // 設(shè)置比較值 [0~16777215]
  TCSR3 |= TMR_IE;     //使能TMR0中斷
  NVIC_ISER |= TMR3_INT; 
  TCSR3 |= CRST;      //復(fù)位TMR0計(jì)數(shù)器    
  TCSR3 |= CEN;      //使能TMR0
 )
}
/****************************************
*函數(shù)名稱:main
*輸    入:無(wú)
*輸    出:無(wú)
*功    能:函數(shù)主體
******************************************/
INT32 main(VOID)
{
     PROTECT_REG            //ISP下載時(shí)保護(hù)FLASH存儲(chǔ)器
  (       
   PWRCON |= XTL12M_EN;      //默認(rèn)時(shí)鐘源為外部晶振
   while((CLKSTATUS & XTL12M_STB) == 0);   //等待12MHz時(shí)鐘穩(wěn)定      
   CLKSEL0 = (CLKSEL0 & (~HCLK)) | HCLK_12M; //設(shè)置外部晶振為系統(tǒng)時(shí)鐘 
   P2_PMD = 0x5555;       //P2口設(shè)置為輸出模式
      P2_DOUT= 0x00;        //P2口輸出低電平
  )
  TMR3Init();  
  while(1)
  {
   if(i > 7)
   {
      i = 0;
   }
  }
}
/****************************************
*函數(shù)名稱:TMR3_IRQHandler
*輸    入:無(wú)
*輸    出:無(wú)
*功    能:定時(shí)器3中斷服務(wù)函數(shù)
******************************************/
VOID TMR3_IRQHandler(VOID)
{
 /* 清除TMR3中斷標(biāo)志位 */
 TISR3 |= TMR_TIF;
    P2_DOUT = 1UL<<i;         //P2口輸出相應(yīng)的電平
 i++;
}
關(guān)閉窗口