21ic问答首页 - HC32L136开发板移植rt-thread nano的问题
HC32L136开发板移植rt-thread nano的问题
Joen232020-11-23
本帖最后由 Joen23 于 2020-11-23 15:58 编辑
各位大佬,有使用过HC32L136开发板移植rt-thread nano的吗?移植rt-thread nano在rt-thread官网上有详细步骤,需要针对芯片自己编写几个函数,其中我看了rt_hw_console_getchar函数,例子里的rt_hw_console_getchar函数体是这样的char rt_hw_console_getchar(void)
{
int ch = -1;
if (__HAL_UART_GET_FLAG(&UartHandle, UART_FLAG_RXNE) != RESET)
{
ch = UartHandle.Instance->DR & 0xff;
}
else
{
if(__HAL_UART_GET_FLAG(&UartHandle, UART_FLAG_ORE) != RESET)
{
__HAL_UART_CLEAR_OREFLAG(&UartHandle);
}
rt_thread_mdelay(10);
}
return ch;
}
需要使用到串口状态寄存器中UART_FLAG_RXNE和UART_FLAG_ORE这两个标志位,但是华大的hc32l136芯片比较低级,它的串口状态寄存器里没有这两个标志位。(说低级不是贬低华大芯片,华大比较高级的芯片如hc32f460的串口状态寄存器有这两个标志位),那移植rt-thread nano时这个rt_hw_console_getchar函数应该怎么编写?
各位大佬,有使用过HC32L136开发板移植rt-thread nano的吗?移植rt-thread nano在rt-thread官网上有详细步骤,需要针对芯片自己编写几个函数,其中我看了rt_hw_console_getchar函数,例子里的rt_hw_console_getchar函数体是这样的char rt_hw_console_getchar(void)
{
int ch = -1;
if (__HAL_UART_GET_FLAG(&UartHandle, UART_FLAG_RXNE) != RESET)
{
ch = UartHandle.Instance->DR & 0xff;
}
else
{
if(__HAL_UART_GET_FLAG(&UartHandle, UART_FLAG_ORE) != RESET)
{
__HAL_UART_CLEAR_OREFLAG(&UartHandle);
}
rt_thread_mdelay(10);
}
return ch;
}
需要使用到串口状态寄存器中UART_FLAG_RXNE和UART_FLAG_ORE这两个标志位,但是华大的hc32l136芯片比较低级,它的串口状态寄存器里没有这两个标志位。(说低级不是贬低华大芯片,华大比较高级的芯片如hc32f460的串口状态寄存器有这两个标志位),那移植rt-thread nano时这个rt_hw_console_getchar函数应该怎么编写?
赞0
rtt还是可以用的,就是想用rtt的finsh功能
评论
2020-11-25
赞0
评论
2020-11-25
赞0
评论
2020-11-25
赞0
不一样的,有RXNE标志位的一定有还rc标志位,但是有些低级芯片只有rc没有rxne,我试过用rc代替rxne,还是不行
评论
2020-11-25
哪里不一样?
赞0
评论
2020-11-25
赞0
现在万事具备,只欠这个函数的具体实现方式了,无论怎么改,还是无法实现功能,头疼呀,周五老板就要问我项目的进度了,现在好慌
评论
2020-11-24
赞0
746475fbcb42645dbf.png (291.86 KB )
下载附件
2020-11-24 15:20 上传
评论
2020-11-24
赞0
评论
2020-11-24
赞0
我知道,但是参考的都是有那两个标志位(都在同一个寄存器),没有的话写不出来,虽然我也知道这个函数是用来接收数据的
评论
2020-11-24
您需要登录后才可以回复 登录 | 注册