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

请问使用 CC2540/CC2541 定时器1 输出的 PWM 波的频率是如何设定的?公式是什么?

RT,使用的是 Modulo 模式。

rtos:

频率由T1CC0决定的,频率大小为Timer1的时钟输入频率/T1CC0的值。

Liang Fang1:

回复 rtos:

rtos 你好,

CLKCONCMD &= ~0x40; // 设置系统时钟源为 32MHZ晶振 while(CLKCONSTA & 0x40); // 等待晶振稳定 CLKCONCMD &= ~0x47; // 设置系统主时钟频率为 32MHZ PERCFG = (PERCFG & ~0x40) | 0x03; // Select Timer 1 Alternative 0 location, set U1CFG and U0CFG to Alternative 1 P2DIR |= 0xC0; // Give priority to Timer 1 P0SEL |= 0x78; // Set P0.4, P0.5 and P0.6 to peripheral T1CNTH = 0xff; T1CNTL = 0xff; T1CTL = 0x0e; /* mode: modulo bit[1:0]=10, div: tick/128 bit[3:2]=11 */ T1CCTL0 = 0x3c; T1CCTL1 = 0x24; T1CCTL2 = 0x24; T1CCTL3 = 0x24; T1CCTL4 = 0x24; T1CC0L = 2500%256; T1CC0H = 2500/256; T1CC1L = 625%256; T1CC1H = 625/256; /* white */ T1CC2L = 625%256; T1CC2H = 625/256; /* green */ T1CC3L = 625%256; T1CC3H = 625/256; /* blue */ T1CC4L = 625%256; T1CC4H = 625/256; /* red */

按照你所说的公式,此输出的 PWM 频率应该是 32000000/128/2500=100HZ

实际值却是50HZ,请问这是如何引起了?

rtos:

回复 Liang Fang1:

我的初始化如下,生成频率125K,你可以参考一下,看看有没有区别 P1DIR|= BV(0)|BV(1); P0DIR|= BV(7); P1SEL|= BV(0)|BV(1); P0SEL|= BV(7);

PERCFG |= 0x40; T1CTL = 0x00;  T1CCTL1 = 0x34; T1CCTL2 = 0x34; T1CCTL3 = 0x34; T1CNTL = 0; // Reset timer to 0;

T1CC0L = 0x00; // 125K 32M/256 = 125K T1CC0H = 0x01; // T1CC1L = 0x80; T1CC1H = 0x00; //  T1CC2L = 0x80; T1CC2H = 0x00; //  T1CC3L = 0x80; T1CC3H = 0x00; 

Liang Fang1:

回复 rtos:

有设定系统时钟吗?

rtos:

回复 Liang Fang1:

默认的,没有设置

Liang Fang1:

回复 rtos:

ok,谢谢!

xiping xiao:

回复 Liang Fang1:

如果要输出2M的PWM,你们试过么,我怎么配置都不成功,最大频率是240K左右

xiaoyu zhou:

回复 rtos:

您好,我现在也在用cc2540产生pwm波。但是我定时器1的3和4通道都无法正常产生。无法改变占空比。而1和2通道可以正常输出。四个通道的设置是一样的。想请教一下是为什么?谢谢

huayang wang:

回复 Liang Fang1:

CC2540系统时钟默认2分频,即16M

cedar_xuesong:

回复 Liang Fang1:

关掉PWM系统分频功能

赞(0)
未经允许不得转载:TI中文支持网 » 请问使用 CC2540/CC2541 定时器1 输出的 PWM 波的频率是如何设定的?公式是什么?
分享到: 更多 (0)