微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2540/CC2541 定时器1 不能输出的2Mhz PWM 波

CC2540/CC2541 定时器1 不能输出的2Mhz PWM 波

时间:10-02 整理:3721RD 点击:

我的程序如下:

 

void PWR_init()

{

  PCON = 0x00;

  SLEEPCMD = 0x00;

}

void INT_init()

{

  IEN0 = 0x00;

  IEN1 = 0x00;

  IEN2 = 0x00;

}

void main()

{

PWR_init(); //主动模式

  do{

    CLKCONCMD = 0x00;

  }while(CLKCONSTA != 0x00); //系统时钟32M,Timer时钟32M

INT_init();//禁止所有中断

  PWM_init();//初始化PWM

}

 

 

void PWM_init()

{

 EA=0;

 P0DIR|= 0x04; //set P0.2 as  output

 P0SEL &= (~0x04); //set P0.2 as GPIO

 //PERCFG |= 0x33; // Move USART1&2 to alternate2 location so that T1 is visible

 P0_2=0;

 

 T1CTL = 0x02; // Div = 1, CLR, MODE = module

 T1CNTL = 0; // Reset timer to 0;

 T1CNTH = 0; // Reset timer to 0;

 

 

 T1CC0L = 0X10; // Ticks = 16 (0.5us)

 T1CC0H = 0x00; // Ticks =16 (0.5us)

 

  T1CCTL0 = 0x4C;//这个不设置Timer1好像不会工作

 

  //IP0 = 0x02; //提高优先级

  //IP1 = 0x02;

 

  EA=1;

  IEN1 |= 0x02; // Enable T1 cpu interrupt

}

 

#pragma vector = T1_VECTOR

__interrupt void pwmISR (void) {

  

// Set up the timer registers

T1STAT = ~ T1STAT;

    P0_2 = ~P0_2;

}

上面的程序,不管怎么调最高能输出240KHz的波形,折腾好几天了,手册也看了好几遍了,就是不知道为什么。

实际测量的波形是236.152Khz

你好,请问这个问题最后解决了吗?我也遇到同样的问题,看规格书应该可以啊,不行也得弄清楚为什么啊。。。

请问您这个代码是在带有BLE协议栈的基础上跑的吗?还是使用的proprietary模式8051直接跑的?

如果是基于BLE协议栈跑的,要注意在代码里面,所有 HCI_EXT_ClkDivOnHaltCmd( HCI_EXT_ENABLE_CLK_divIDE_ON_HALT ); 都去掉试试

不是这么玩的,2M的PWM要用自动翻转模式,而不是在ISR中手工翻转IO

这么做,受限于IO的速度和ISR的速度

---------------------

建议:用PWM的硬件翻转模式输出2M波形

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top