CC2541 开启POWER_SAVING后,若也开启HAL_UART=TRUE,则无法进休眠,外部的按键中断也进不了
CC2541关闭POWER_SAVING情况下,不管是否开启HAL_UART=TRUE,都可以正常进按键中断的
若开启POWER_SAVING后,
若关闭宏HAL_UART=TRUE,则可以直觉进休眠,正常进按键中断,
若开启宏HAL_UART=TRUE,则无法进休眠也无法进按键中断;
请教TI工程师或者热心网友,谢谢!
可怜,没人回复!
自己完善吧,
主要是开启了POWER_SAVING后,DMA uart会启用流控,会启用port0中断,而TI提供的例程中,Port0的串口流中断和port0的按键中断是同一个中断入口,却写成了两个中断服务函数,而没有统一入口。
其实在编译时就有warning提示指向了同一地址,也是自己大意了一直没注意它,
所以修改方法就是把二者的中断合而为一就可以了。
抱歉,没看见这帖子,论坛流量大,有时候确实会忽略个别提问,感谢你把解决方法发出来共享
赞一个
我的做法是禁用DMA流控
你是怎么禁用DMA流控的,?直接关闭宏?这样还是不行吧,我也有试过
你是怎么禁用DMA流控的,?直接关闭宏?这样还是不行吧,我也有试过
在_hal_uart_dma.c文件中,作如下修改,就可以禁用DMA流控。
#if !defined( DMA_PM ) #if defined POWER_SAVING #define DMA_PM 0//1 #else #define DMA_PM 0 #endif // POWER_SAVING #endif // !DMA_PM
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 |
|
补充:
每次在UART通讯完毕后,执行了”osal_pwrmgr_device( PWRMGR_BATTERY ); // enter PM2 mode“才使得总电流降为10.75mA(去掉UART外接器件,电流为0.27mA)。但这个多余的10mA电流消耗在休闲的TX,RX线上了,PM2模式好像没把TX/RX关闭一样。