OpenHarmony串口UART使用挂在read,求指点

龙猫哦豁
发布于 2022-7-16 11:40
浏览
0收藏

大神们,刚接触OpenHarmony,用的海思3861的板子,碰到一个问题,纠结很久没搞定,求指点。
hi_uart_write使用输出正常,但程序挂在了hi_uart_read,不再往下执行了
相关代码如下:
/* uart0 调试串口功能 /
hi_io_set_func(HI_IO_NAME_GPIO_3, HI_IO_FUNC_GPIO_3_UART0_TXD); /
uart0 tx /
hi_io_set_func(HI_IO_NAME_GPIO_4, HI_IO_FUNC_GPIO_4_UART0_RXD); /
uart0 rx */

hi_u32 ret;
hi_uart_attribute uart_attr = {
    .baud_rate = 115200, /* baud_rate: 115200 */
    .data_bits = 8,      /* data_bits: 8bits */
    .stop_bits = 1,
    .parity = 0,
};

ret = hi_uart_init(0, &uart_attr, HI_NULL);

if(ret != HI_ERR_SUCCESS)
{
     printf("Failed to init uart!\n");
}
else
{
    printf("Completed to init uart!\n");
}

unsigned char uart_buff[72] = {0};
unsigned char *uart_buff_ptr = uart_buff;
unsigned char index = 0;
unsigned char len = 0;
char* tx_str = "tx_str";

while(1)
{
    osDelay(100);//延时100ms
    hi_uart_write(0,tx_str,6);//发送测试ok_wh20220716
    len = hi_uart_read(0, uart_buff_ptr, 72);//read导致挂了,待查wh_20220715
//len = hi_uart_read(0, uart_buff, 72);//也不行wh_20220715
    printf("len = %d!\n",len);//执行不到
}

收藏
回复
举报
1条回复
按时间正序
/
按时间倒序
Hello_Kun
Hello_Kun

使用hi_uart_read_timeout()函数可以解决大部分问题,设置等待读取时间,没读取到会退出。不过bug就是会遇到读取数据为空。我也头疼这个问题

回复
2022-9-2 11:48:56
回复
    相关推荐