首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

08的定时器问题

08的定时器问题

大家好,我最近编了一个定时器的小程序,发现一些问题,还望高手给指点一下,程序如下:

void init(void){
SOPT1_COPE=0;
  ICSC2 = 0x06;//使能外部晶振
  ICSC1 = 0x00;
  while(ICSSC_IREFST!=0);
  while(ICSSC_CLKST!=0b00);
  ICSSC_DRST_DRS = 0b00;
}

void time_init(void){
  SCGC1_TPM2 = 1; //使能TPM2模块的时钟
TPM2MOD = 0x00ff; //设置TPM2的计数器为自由运行模式
TPM2C0VL=0xFF;
  TPM2C0SC = 0x50;
  TPM2SC = 0x0E;
}

void Delay(int n)       //延迟程序
{  
    unsigned int i,j;
    for(i=0;i<=n;i++)
    for(j=0;j<=200;j++);
}
   
void main(void){
  init();
  time_init() ;
  PTDDD=0xFF;
  PTDPE=0xff;//开漏输出
  EnableInterrupts;
  while(1);

}

void interrupt VectorNumber_Vtpm2ch0 TPM_ISR()
{
  TPM2SC_TOF = 0;
  TPM2C0SC_CH0F = 0;
  PTDD = ~PTDD;
TPM2C0VH=0x00; //设置100MS定时
TPM2C0VL=0xFF;
}

问题:1.这段程序是利用输出比较的方式定时一段时间。那控制定时时间长短的寄存器应该是TPM2C0VH和TPM2C0VL,但是我做实验验证,这个定时时间只同TPM2MD有关,不知道什么原因,大家帮我看下。
         2.这段程序编写的实际的定时时间是理论上定时时间的64倍,应该是哪里有分频啦。但是我没找到,大家帮帮忙哈
我用的芯片是MC9S08LG32
第一个问题已经解决,在中断把TPMXCNT计数器清零,就可以利用TPMXCNV来控制定时时间啦,
第二个问题咋整捏
返回列表