宋点点 发表于 2012-8-8 14:12:48

求助:CC2530定时器输出比较模式,输出的频率不对

系统时钟是32MHz,使用定时器1的输出比较模式,T1的I/O口映射到P0_2端口。T1CC0我设置为0x7fff,也就是说在一次计数到最大值0xffff时,输出会产生两次跳转,产生的方波频率应该为488Hz,但是实际测试到的频率是244Hz,也就是说波形没有在0x7fff处产生反转。请教各位老师,是我哪个地方还没有理解透,还没有配置好。程序如下:


/****************************
//T1初始化程序
***************************/
void InitialT1test(void)
{
    EA=0;

    P0SEL |= 0X04;/*P0_2为T1的外设端口*/
    P2DIR |= 0X80; /*设置T1的优先级为第一优先级*/


    T1CCTL0=0x64; /*
                  7:
                  6:使能0通道中断请求
                  5:3 在向上比较清除输出,在0设置
                  2:比较模式
                  1:0 未捕获
                  */
   
    T1CC0L=0xff; /*在上升到 0xffff/2 的这个时间点时清零*/
    T1CC0H=0x7f;

    T1CTL = 0x01; /*
                  7:4
                  3:2 32Mhz不分频
                  1:0 自由运行
                  */
   
   T1IE = 1;/*开T1中断*/
   EA = 1;/*开总中断*/
   
}

void InitSysClock()
{
    CLKCONCMD &= ~0x40;         // 设置系统时钟源为 32MHZ晶振
    while(CLKCONSTA & 0x40);    // 等待晶振稳定
    CLKCONCMD &= ~0x47;         // 设置系统主时钟频率为 32MHZ
}

void main()
{
      InitSysClock();
      InitialT1test();   
               while(1)            
      {            
      }
}

宋点点 发表于 2012-8-9 11:30:35

帖子要沉了了,问题没解决,果断顶起来。

迪加 发表于 2012-8-10 10:18:08

定时器T1 32M/65536=488HZ 怎么会是244Hz呢?

宋点点 发表于 2012-8-13 10:24:33

迪加 发表于 2012-8-10 10:18 static/image/common/back.gif
定时器T1 32M/65536=488HZ 怎么会是244Hz呢?

迪迦老师,我测量的波形图如下:我配置是要在0x7ffff出产生跳变的,但是看输出的频率并没有发生调变。

宋点点 发表于 2012-8-13 10:25:50

是不是我对输出波形的寄存器配置理解不对?

寒寒 发表于 2014-8-4 16:49:38

CLKCONCMD &= ~0x47;         // 设置系统主时钟频率为 32MHZ
这一句把系统时钟设置成32M,timer时钟设置为250K了吧
页: [1]
查看完整版本: 求助:CC2530定时器输出比较模式,输出的频率不对