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

CC2541 开启POWER_SAVING后,若也开启HAL_UART=TRUE,则无法进休眠,外部的按键中断也进不了

CC2541关闭POWER_SAVING情况下,不管是否开启HAL_UART=TRUE,都可以正常进按键中断的

若开启POWER_SAVING后,

若关闭宏HAL_UART=TRUE,则可以直觉进休眠,正常进按键中断,

若开启宏HAL_UART=TRUE,则无法进休眠也无法进按键中断;

请教TI工程师或者热心网友,谢谢!

lkingz lin:

可怜,没人回复!!!!

自己完善吧,

主要是开启了POWER_SAVING后,DMA uart会启用流控,会启用port0中断,而TI提供的例程中,Port0的串口流中断和port0的按键中断是同一个中断入口,却写成了两个中断服务函数,而没有统一入口。

其实在编译时就有warning提示指向了同一地址,也是自己大意了一直没注意它,

所以修改方法就是把二者的中断合而为一就可以了。

Viki Shi:

回复 lkingz lin:

抱歉,没看见这帖子,论坛流量大,有时候确实会忽略个别提问,感谢你把解决方法发出来共享

cedar_xuesong:

回复 lkingz lin:

赞一个

我的做法是禁用DMA流控

lkingz lin:

回复 cedar_xuesong:

你是怎么禁用DMA流控的,?直接关闭宏?这样还是不行吧,我也有试过

lkingz lin:

回复 cedar_xuesong:

你是怎么禁用DMA流控的,?直接关闭宏?这样还是不行吧,我也有试过

summer xu:

回复 lkingz lin:

在_hal_uart_dma.c文件中,作如下修改,就可以禁用DMA流控。

#if !defined( DMA_PM )
#if defined POWER_SAVING
#define DMA_PM0//1
#else
#define DMA_PM0
#endif // POWER_SAVING
#endif // !DMA_PM

user3840094:

回复 Viki Shi:

Viki Shi:

跟前辈一样我也碰到了这个问题。我现在用到CC2541的主要资源如下:

1,Use UART1 with ALT2 mode(P1.7 – RX, P1.6 – TX, P1.5 – RT, P1.4 – CT),  in fact, RT and CT pins are not used yet.

2,Use HandleKeys as below: HAL_KEY_SW_1, HAL_KEY_SW_3, HAL_KEY_SW_4, HAL_KEY_SW_5

3,IAR 预处理设置如下: 

INT_HEAP_LEN=3072 HALNODEBUG OSAL_CBTIMER_NUM_TASKS=1 HAL_AES_DMA=TRUE    // this is added automatically by IAR during build HAL_DMA=TRUE              // this is added automatically by IAR during build POWER_SAVING xPLUS_BROADCASTER xHAL_LCD=TRUE HAL_LED=TRUE HAL_KEY=TRUE HAL_UART=TRUE HAL_UART_ISR=TRUE HAL_UART_DMA=2

现在产品功能正常 — IO中断及UART通讯,但电流就是降不下来,总电流19.1mA(去掉UART外接器件,电流为8.9mA)。

参照“作者 summer xu 发表于 2015-11-3 12:08” 的如下建议改动后。总电流降为10.75mA(去掉UART外接器件,电流为0.27mA)。

这个10.75MA的电流怎么也降不下去了,还有哪些高招降低这个电流请指教!!!!,谢谢。

在_hal_uart_dma.c文件中,作如下修改,就可以禁用DMA流控。

?

1
2
3
4
5
6
7

#if !defined( DMA_PM )
#if defined POWER_SAVING
#define DMA_PM                     0//1
#else
#define DMA_PM                     0
#endif // POWER_SAVING
#endif // !DMA_PM

user3840094:

回复 user3840094:

补充: 

每次在UART通讯完毕后,执行了”osal_pwrmgr_device( PWRMGR_BATTERY );   // enter PM2 mode“才使得总电流降为10.75mA(去掉UART外接器件,电流为0.27mA)。但这个多余的10mA电流消耗在休闲的TX,RX线上了,PM2模式好像没把TX/RX关闭一样。

赞(0)
未经允许不得转载:TI中文支持网 » CC2541 开启POWER_SAVING后,若也开启HAL_UART=TRUE,则无法进休眠,外部的按键中断也进不了
分享到: 更多 (0)