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关闭一样。