● hi_uart_lp_restore:深睡唤醒后恢复UART寄存器内容。
1.3 开发指引
以应用UART2为例,数据收发流程如下:
步骤1 配置IO复用:将对应的IO复用为UART的TX、RX、RTS、CTS功能。
如果不需要支持硬件流控,仅配置TX、RX即可。
hi_void usr_uart_io_cong()
{
/* 如下IO复用配置,也可集中在SDK中的app_io_init函数中进行配置 */
hi_io_set_func(HI_IO_NAME_GPIO_11, HI_IO_FUNC_GPIO_11_UART2_TXD); /* uart2 tx */
hi_io_set_func(HI_IO_NAME_GPIO_12, HI_IO_FUNC_GPIO_12_UART2_RXD); /* uart2 rx */
}
步骤2 UART初始化:配置UART的波特率、数据位等属性,并使能UART。
hi_u32 usr_uart_io_cong()
{
hi_u32 ret;
static hi_uart_attribute g_demo_uart_cfg = {115200, 8, 1, 2, 0};
ret = hi_uart_init(HI_UART_IDX_2, &g_demo_uart_cfg, HI_NULL);
if (ret != HI_ERR_SUCCESS) {
printf("uart init fail\r\n");
}
return ret;
}
步骤3 UART数据收发:调用UART读写数据接口,进行数据收发。
hi_void usr_uart_read_data()
{
hi_s32 len;
hi_u8 ch[64] = { 0 };
len = hi_uart_read(HI_UART_IDX_2, ch, 64);
if (len > 0) {
/* process data */
}
}
hi_u32 usr_uart_write_data(hi_u8 *data, hi_u32 data_len)
{
hi_u32 oset = 0;
hi_s32 len = 0;
while
(oset < data_len) {
len = hi_uart_write(HI_UART_IDX_2, data + oset, (hi_u32)(data_len - oset));
if ((len < 0) || (0 == len)) {
return -1;
}
oset += (hi_32)len;
if (oset >= data_len) {
break;
}
}
return HI_ERR_SUCCESS;
}
----结束
Hi3861V100
/Hi3861LV100 设备驱动
开发指南
1 UART
文档版本 02 (2020-07-03) 版权所有 © 上海海思技术有限公司 2