关于CC2541的串口传输问题
hi all,
我用CC2541与一个外部MCU通过UART口进行数据传输,数据程序中已经实现可以数据的正常通信,但是我无法使CC2541进入休眠状态PM2.
请问:
1,如何CC2541如何关闭UART口后进入休眠状态,
我修改了P1SEl和PIDIR,PERCFG用于修改UART管口配置,uart不能正常工作了,但是一直出现pwrmgr_attribute.pwrmgr_task_state = 2,不进入休眠
我在程序中发现HalUARTClose,但是这个函数无定义
2,下面这个函数是不是当pwrmgr_attribute.pwrmgr_task_state == 0时才能说程序进入到PM2,或者PM3休眠状态。
void osal_pwrmgr_powerconserve( void )
{
uint32 next;
halIntState_t intState;
// Should we even look into power conservation
if ( pwrmgr_attribute.pwrmgr_device != PWRMGR_ALWAYS_ON )
{
// Are all tasks in agreement to conserve
if ( pwrmgr_attribute.pwrmgr_task_state == 0 )
{
// Hold off interrupts.
HAL_ENTER_CRITICAL_SECTION( intState );
// Get next time-out
next = osal_next_timeout();
// Re-enable interrupts.
HAL_EXIT_CRITICAL_SECTION( intState );
// Put the processor into sleep mode
OSAL_SET_CPU_INTO_SLEEP( next );
}
}
}
请大神们帮帮忙!
顶一下,求帮助呀
顶一下,发现了一个问题,就是如果工程设置中增加了HAL_UART=TRUE,则
pwrmgr_attribute.pwrmgr_task_state 会一直为 2
void osal_pwrmgr_powerconserve( void )
{
uint32 next;
halIntState_t intState;
// Should we even look into power conservation
if ( pwrmgr_attribute.pwrmgr_device != PWRMGR_ALWAYS_ON )
{
// Are all tasks in agreement to conserve
if ( pwrmgr_attribute.pwrmgr_task_state == 0 )
{
// Hold off interrupts.
HAL_ENTER_CRITICAL_SECTION( intState );
// Get next time-out
next = osal_next_timeout();
// Re-enable interrupts.
HAL_EXIT_CRITICAL_SECTION( intState );
// Put the processor into sleep mode
OSAL_SET_CPU_INTO_SLEEP( next );
}
}
}
导致无法进入休眠状态,
但是不设置HAL_UART=TRUE则不能串口传输,怎么办
问题解决了,
是在配置中设置
HAL_UART_ISR=1
HAL_UART_DMA=0