This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC1310: CC1310串口关闭后有770uA的电流

Part Number: CC1310

串口初始化时,设置为UART_MODE_CALLBACK模式。

任务创建时,调用下方所示的hal_uart_Open函数,打开串口。然后再调用下方所示的hal_uart_Close函数,关闭串口。随后程序进入主循环,等待信号量。因为没有post过信号量,所以模块应该进入休眠。

但是实测发现,存在700多uA的电流。

然后修改程序,创建任务时,不再执行打开和关闭串口的动作,直接进入主循环,等待信号量。此时挂机电流正常。

请问为什么会出现这个700多uA的电流,是串口没有正常关闭吗?

void hal_uart_Callback(UART_Handle handle, void *buf, size_t count)//串口回调函数
{
    UART_read(myuart, &callbuff, 1);
}

void hal_uart_Init(void)
{
    UART_init();
    UART_Params_init(&myuartParams);
    myuartParams.writeDataMode = UART_DATA_BINARY;
    myuartParams.readDataMode = UART_DATA_BINARY;
    myuartParams.readReturnMode = UART_RETURN_FULL;
    myuartParams.readEcho = UART_ECHO_OFF;
    myuartParams.baudRate = 9600;
    myuartParams.readMode = UART_MODE_CALLBACK;
    myuartParams.readCallback = hal_uart_Callback;
}

void hal_uart_Open(void)//打开串口
{
    myuart = UART_open(Board_UART0, &myuartParams);
    if(myuart == NULL)
    {
        while(1);
    }
    UART_read(myuart, &callbuff, 1);
}

void hal_uart_Close(void)//关闭串口
{
    UART_readCancel(myuart);
    UART_close(myuart);
    myuart = NULL;
}

void uartRxTxfunc(UArg arg0, UArg arg1)//任务函数
{
    hal_uart_Open();
    hal_uart_Close();

    //主循环
    while(1)
    {
        Semaphore_pend(uartRxTxTaskSemHandle, BIOS_WAIT_FOREVER);
    }
}