TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2540 TIMER1

你好,我们现在用KEYFOB例程时,硬件把BUZZER的io口从1-6该到1-2了,也就是说原来的timer3需要修改成timer1,在仿照timer3配置timer1时,发现没有register去设置timer1的stop和start。有没有timer1的使用实例?或者我要怎么配置timer1来达到我设置蜂鸣器频率的要求?

wang wx:

void buzzerInit(void){#if defined ( CC2540_MINIDK )      // Buzzer connected at P1_2    // We will use Timer 1 Channel 0 at alternate location 2    // Channel 0 will toggle on compare with 0 and counter will    // count in up/down mode to T1CC0.    PERCFG |= 0x40;             // Timer 1 Alternate location 2    P1DIR |= 0x04;              // P1_2 = output    P1SEL |= 0x04;              // Peripheral function on P1_2    T1CTL &= ~0x10;             // Stop timer 1 (if it was running)    T1CTL |= 0x04;              // Clear timer 1    T1CTL &= ~0x08;             // Disable Timer 1 overflow interrupts    T1CTL |= 0x03;              // Timer 1 mode = 1 – Up/Down    T1CCTL0 &= ~0x40;           // Disable channel 0 interrupts    T1CCTL0 |= 0x04;            // Ch0 mode = compare    T1CCTL0 |= 0x10;            // Ch0 output compare mode = toggle on compare#endif}

start函数里下面一段:

    // Update registers    T1CTL &= ~0xE0;    T1CTL |= prescaler;    T1CC0L = (uint8)ticks;    // Start timer    T1CTL |= 0x10;

void buzzerStop(void){#if defined ( CC2540_MINIDK )      T1CTL &= ~0x10;             // Stop timer 1#endif}

以上红色部分配置不正确,能帮忙指出该怎么修改吗?

Yan:

回复 wang wx:

Hi Wang wx,

timer 1 跟 timer 3 寄存器结构有很大不一样.

首先timer 1是16-bit的一个counter, timer 3是8-bit的.

timer 1里面并没有clear的寄存器配置, 也没有overflow interrupts的配置.

因此不推荐你使用timer 1.

你可以用timer 4, 结构配置基本跟timer 3是一样的, 你完全可以参照timer 3的配置去写代码.

wang wx:

回复 wang wx:

Hi Yan,

     我使用timer 3的设置配置,看原来的io1-6,发现波形也是不连续的。

wang wx:

回复 Yan:

32M正常工作

wang wx:

回复 wang wx:

测量发现32M震荡不连续,换了几个晶振,现象一样,是不是IC问题?

Nutcracker:

回复 wang wx:

你是在IO1-6上用示波器测量的吗?波形是指那个PIN脚?

wang wx:

回复 Nutcracker:

PIN38,直接2540IC脚上量的。

Nutcracker:

回复 wang wx:

这是个GPIO的输出,波形不连续是正常的(一直输出岂不是很耗电?要有数据传输的时候才输出时钟)。这不是晶振的直接输出。

赞(0)
未经允许不得转载:TI中文支持网 » CC2540 TIMER1
分享到: 更多 (0)