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

CC1310 SDK BUG: 提一个CC1310SDK关于UART_Read的bug

亲爱的TI工程师们:

我们的应用中用到了UART,且要求UART RX随时接收,应此创建了UART任务,在任务循环中,我们通过 UART_Read函数的阻塞模式来接收 UART数据。如下:
while (1)
{
UART_read(m_uart_handle, &rx_data, 1);
if (m_rx_callback)
{
m_rx_callback(&rx_data, 1);
}
}

只是你们TI的 UART_Read 的阻塞模式有问题,不能阻塞任务。在 UART_Read前加一条等待event的语句(如下),然后再测试功耗就下来了。
while (1)
{
/* Wait for event */
(void)Event_pend(m_uart_event_handle, 0, 0xFFFFFFFF, BIOS_WAIT_FOREVER);

UART_read(m_uart_handle, &rx_data, 1);
if (m_rx_callback)
{
m_rx_callback(&rx_data, 1);
}
}

但是…,这样问题又来了。必须要在UART 接收的中断中发送这个事件才有意义。那么我如何修改cc1310 sdk的驱动源码或者TIRTOS的源码?cc1310sdk中有相应的工程吗?

Felix ZF:

UART_read是会阻塞任务的,只有当接收满了指定长度的数据后,才会继续执行UART_read之后的语句。
在UART_read阻塞状态下,因为UART仍然处于等待数据的工作状态,所以功耗比standby时高。

赞(0)
未经允许不得转载:TI中文支持网 » CC1310 SDK BUG: 提一个CC1310SDK关于UART_Read的bug
分享到: 更多 (0)