打印
[DemoCode下载]

M051定时器3 周期模式

[复制链接]
684|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
neeringstu|  楼主 | 2016-1-28 08:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "SmartM_M0.h"
UINT32 i =0;
/****************************************
*函数名称:TMR3Init
*输    入:无
*输    出:无
*功    能:定时器3初始化
******************************************/
VOID TMR3Init(VOID)
{
    PROTECT_REG
(
  /* 使能TMR0时钟源 */
     APBCLK |= TMR3_CLKEN;
  /* 选择TMR0时钟源为外部晶振12MHz */
  CLKSEL1 = (CLKSEL1 & (~TM3_CLK)) | TM0_12M;
  /* 复位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;  // 设置预分频值 [0~255]
  TCMPR3 = 12000*500;        // 设置比较值 [0~16777215]
  TCSR3 |= TMR_IE;     //使能TMR0中断
  NVIC_ISER |= TMR3_INT;
  TCSR3 |= CRST;      //复位TMR0计数器   
  TCSR3 |= CEN;      //使能TMR0
)
}
/****************************************
*函数名称:main
*输    入:无
*输    出:无
*功    能:函数主体
******************************************/
INT32 main(VOID)
{
     PROTECT_REG            //ISP下载时保护FLASH存储器
  (      
   PWRCON |= XTL12M_EN;      //默认时钟源为外部晶振
   while((CLKSTATUS & XTL12M_STB) == 0);   //等待12MHz时钟稳定      
   CLKSEL0 = (CLKSEL0 & (~HCLK)) | HCLK_12M; //设置外部晶振为系统时钟
   P2_PMD = 0x5555;       //P2口设置为输出模式
      P2_DOUT= 0x00;        //P2口输出低电平
  )
  TMR3Init();  
  while(1)
  {
   if(i > 7)
   {
      i = 0;
   }
  }
}
/****************************************
*函数名称:TMR3_IRQHandler
*输    入:无
*输    出:无
*功    能:定时器3中断服务函数
******************************************/
VOID TMR3_IRQHandler(VOID)
{
/* 清除TMR3中断标志位 */
TISR3 |= TMR_TIF;
    P2_DOUT = 1UL<<i;         //P2口输出相应的电平
i++;
}


沙发
芙蓉洞| | 2016-1-29 15:22 | 只看该作者
用的是中断方式,如果想输入PWM,再如何设置呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

35

主题

235

帖子

0

粉丝