我在用CC2540PWM控制灯时发现打开低功耗PWM输出很不稳定,关闭时正常,但如果不打开低功耗模式时广播时的电流太大,这个怎么解决?
Viki Shi:
PWM需要时钟源,低功耗会关闭时钟,二选一
Tao Hong:
回复 Viki Shi:
我想在广播的时候开启低功耗,当收到蓝牙数据的时候主动开启时钟源,这样做行不行?
guo yang1:
hi,Tao Hong,
请问你的PWM是怎么设置的呢,能方便把代码贴出来吗
Barbara Wu:
回复 Tao Hong:
广播的时候默认应该是不会进入低功耗模式的
jason wen:
回复 Tao Hong:
Hi TaoHong
我也遇到同样的情况,只不过你使用的是定时器的比较输出,而我使用的是定时器的输入捕获,我验证过,就算是一个简单的定时器溢出中断,没有捕获也没有比较,只要把POWER_SAVING这个宏打开,定时器的计数频率就会出现偏差,也就是与设定的频率不对应,我觉得是OSAL进入和退出休眠时,晶振间的频繁切换造成定时器的计数不正确,至今还没找到解决方法。
Barbara Wu:
回复 jason wen:
尝试一下不要这个函数
HCI_EXT_ClkDivOnHaltCmd( HCI_EXT_ENABLE_CLK_DIVIDE_ON_HALT );
jason wen:
回复 Barbara Wu:
Hi WBJ 关闭了该函数后,依然不能实现在打开POWER_SAVING的情况下,使用定时器进行计数,请问还有什么方法吗?
Tao Hong:
回复 guo yang1:
void PWM_init(){ // PERCFG = PERCFG | 0x03; // Select Timer 1 Alternative 0 location, set U1CFG and U0CFG to Alternative 1 PERCFG = (PERCFG & ~0x40) | 0x03; // Select Timer 1 Alternative 0 location, set U1CFG and U0CFG to Alternative 1 // PERCFG = PERCFG | 0x40; P2DIR |= 0xc0; // Give priority to Timer 1 P0SEL |= 0x18; // Set P0.4, P0.5 and P0.6 to peripheral T1CNTH = 0xff; T1CNTL = 0xff; T1CTL = 0x02; T1CCTL1 = 0x1c; T1CCTL2 = 0x1c; T1CC0L = 0x00; T1CC0H = 0x01; T1CC1L = 0x00; T1CC1H = 0x00; T1CC2L = 0x00; T1CC2H = 0x00; }
Tao Hong:
回复 jason wen:
你如果开了POWER_SAVING后如果要使用定时器,在使用前加上下面的代码输出的频率就稳定了
CLEAR_SLEEP_MODE(); HAL_BOARD_INIT(); osal_pwrmgr_device( PWRMGR_ALWAYS_ON );
jason wen:
回复 Tao Hong:
Thx TaoHong
请问添加了 CLEAR_SLEEP_MODE(); HAL_BOARD_INIT(); osal_pwrmgr_device( PWRMGR_ALWAYS_ON ); 这三句代码后,您是在哪里再启动POWER_SAVING 的呢?
TI中文支持网


