1.UART参考代码及相应文档:
UART设备 (rt-thread.org)https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/uart/uart_v1/uart2.将“串口接收不定长数据”的代码保存为kernel-sample-0.1.0目录下的uart_data_sample.c文件,打开RT-Thread Keil模拟器的project工程,在kernel-sample下Add Exiting Files to Group ‘kernel-sample’,将刚生成的uart_data_sample.c文件添加进去,如图:
若出现中文乱码,按照Edit->Configuration->Editor->Encoding,选择Chinese GB2312(Simplified)设置,重启Keil后重新添加uart_data_sample.c文件。 根据介绍,这是一个串口设备接收不定长数据的示例代码,程序功能是通过串口uart2输出字符串"hello RT-Thread!",并通过串口uart2输入一串字符(不定长),再通过数据解析后,使用控制台显示有效数据。
3.Rebuild完成后,依次Debug->Start/Stop Debug Session,Debug->Run,View->Serial Windows->UART #1,运行uart_data_sample,提示程序执行失败,如下:
这说明找不到UART2,打开drv_usart.c文件,可见与UART2相关的代码为灰色,显然UART2不起作用。
实际上设备配置文件为rtconfig.h,添加代码define RT_USING_UART2则可打开UART2,如下:
重新编译并Debug,打开UART #1和UART #2观察窗口,运行uart_data_sample,效果如下:
在UART #2随便输入几个字符,例如123456,回车,回到UART #1后,会看到输出data=123456。
4.很多UART例子功能是将输入的字符+1输出(错位输出),在本例中只需将data[i++] = ch改为data[i++] = ch+1即可实现,测试效果如下: