打印
[DemoCode下载]

新唐M051定时器2测试程序

[复制链接]
636|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wahahaheihei|  楼主 | 2016-8-13 17:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以下是M051单片机的定时器2测试程序 成功!!
#include "SmartM_M0.h"
bool flag = 0; //中断标志位
/****************************************
*函数名称:TMR2Init
*输    入:无
*输    出:无
*功    能:定时器2初始化
******************************************/
VOID TMR2Init(VOID)
{
    PROTECT_REG
(
  /* 使能TMR2时钟源 */
     APBCLK |= TMR2_CLKEN;
  /* 选择TMR2时钟源为外部晶振12MHz */
  CLKSEL1 = (CLKSEL1 & (~TM2_CLK)) | TM1_12M;  
  /* 复位TMR2 */
  IPRSTC2 |=  TMR2_RST;
  IPRSTC2 &= ~TMR2_RST;
  /* 选择TMR2的工作模式为周期模式*/
  TCSR2 &= ~TMR_MODE;
  TCSR2 |=  MODE_PERIOD;  
  /* 溢出周期 = (Period of timer clock input) * (8-bit Prescale + 1) * (24-bit TCMP)*/
  /* 溢出周期 = (1/12MHz) * (0 + 1) * (12000*500)=500ms (0.5S)*/
  TCSR2  = TCSR2 & 0xFFFFFF00;  // 设置预分频值 [0~255]
  TCMPR2 = 12000*500;        // 设置比较值 [0~16777215]
  TCSR2 |= TMR_IE;     //使能TMR0中断
  NVIC_ISER |= TMR2_INT;
  TCSR2 |= CRST;      //复位TMR0计数器   
  TCSR2 |= CEN;      //使能TMR0
)
}
/****************************************
*函数名称:main
*输    入:无
*输    出:无
*功    能:函数主体
******************************************/
INT32 main(VOID)
{
  u8 i =0;
     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口输出低电平
  )
  TMR2Init();
    while(1)
  {
   if(flag)
  {
   flag = 0;
   i++;
  }
  if(i>7)
  {
   i = 0;
  }
  P2_DOUT = 1UL<<i;         //P2口输出相应的电平
  }
}
/****************************************
*函数名称:TMR2_IRQHandler
*输    入:无
*输    出:无
*功    能:定时器2中断服务函数
******************************************/
VOID TMR2_IRQHandler(VOID)
{
/* 清除TMR1中断标志位 */
TISR2 |= TMR_TIF;
flag = 1;
}


沙发
gejigeji521| | 2016-8-13 21:50 | 只看该作者
定时器控制器包括4组32位的定时器, TIMER0~TIMER3, 方便用户的定时器控制应用。定时器模块可支持例如频率测量,计数,间隔时间测量,时钟产生,延迟时间等功能。定时器可在计时溢出时产生中断信号,也可在操作过程中提供计数的当前值。
定时器这么多,其实并不矛盾,每个定时器都是唯一的,功能不尽相同。

使用特权

评论回复
板凳
huangcunxiake| | 2016-8-13 23:18 | 只看该作者
定时器2独有的特性值得深入学习。

使用特权

评论回复
地板
Jessicakjdsl| | 2016-8-15 21:41 | 只看该作者
定时器程序和PWM程序是一起工作的

使用特权

评论回复
5
huangcunxiake| | 2016-8-16 16:19 | 只看该作者
Timer0 ~ Timer3 的时钟在APBCLK[5:2] 中使能,Timer0的时钟源在CLKSEL1[10:8]中选择,
Timer1的时钟源在CLKSEL1[14:12]中选择,Timer2的时钟源在CLKSEL1[18:16]中选择,Timer3的
时钟源在CLKSEL1[22:20]中选择。

使用特权

评论回复
6
天灵灵地灵灵| | 2016-8-16 21:16 | 只看该作者
定时器可在计时溢出时产生中断信号,也可在操作过程中提供计数的当前值。

使用特权

评论回复
7
玛尼玛尼哄| | 2016-8-17 19:16 | 只看该作者
看了那个权威指南都没提这些定时器等相关外设的使用,应该说,这些不是内核考虑的事情。

使用特权

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

本版积分规则

213

主题

3022

帖子

12

粉丝