这篇来添加下FinSH组件,实现串口交互操作。在https://bbs.eeworld.com.cn/thread-1250156-1-1.html这篇的基础上修改。
一、添加串口驱动
要实现FinSH组件串口的操作,需要添加串口的收发驱动程序。
1.1、使能串口
使能rt-thread nano 系统下的串口功能,打开配置头文件修改
使能后,在头文件中会出现 RT_USING_CONSOLE的定义
1.2、添加串口初始化程序
init_uart.c
void init_uart(void)
{
UART_InitTypeDef UART_InitStructure = {0};
GPIO_InitTypeDef GPIO_InitStructure = {0};
RCC_AHBPeriphClk_Enable(DEBUG_UART_GPIO_CLK, ENABLE);
DEBUG_UART_APBClkENx(DEBUG_UART_CLK, ENABLE);
//UART TX RX ??
DEBUG_UART_AFTX;
DEBUG_UART_AFRX;
GPIO_InitStructure.Pins = DEBUG_UART_TX_GPIO_PIN;
GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_Init(DEBUG_UART_TX_GPIO_PORT, &GPIO_InitStructure);
GPIO_InitStructure.Pins = DEBUG_UART_RX_GPIO_PIN;
GPIO_InitStructure.Mode = GPIO_MODE_INPUT_PULLUP;
GPIO_Init(DEBUG_UART_RX_GPIO_PORT, &GPIO_InitStructure);
UART_InitStructure.UART_BaudRate = DEBUG_UART_BaudRate;
UART_InitStructure.UART_Over = UART_Over_16;
UART_InitStructure.UART_Source = UART_Source_PCLK;
UART_InitStructure.UART_UclkFreq = DEBUG_UART_UclkFreq;
UART_InitStructure.UART_StartBit = UART_StartBit_FE;
UART_InitStructure.UART_StopBits = UART_StopBits_1;
UART_InitStructure.UART_Parity = UART_Parity_No ;
UART_InitStructure.UART_HardwareFlowControl = UART_HardwareFlowControl_None;
UART_InitStructure.UART_Mode = UART_Mode_Rx | UART_Mode_Tx;
UART_Init(DEBUG_UARTx, &UART_InitStructure);
}
1.3、添加串口输出函数
修改void rt_hw_console_output(const char *str)函数内容
二、添加FinSH组件
2.1、在项目中添加FinSH组件
2.2、添加后,在项目中会增加这几个文件
2.3、配置使能FinSH组件
2.4、添加串口接收函数
在finsh_port.c中修改rt_hw_console_getchar()函数
三、程序运行
修改完成后,编译项目,下载到开发运行
串口下输入指令操作
本帖最后由 TL-LED 于 2023-7-19 17:46 编辑
FinSH这个组件我觉得是RTThread的精髓。
引用: lugl4313820 发表于 2023-7-20 08:25 6666,这个组件占用内存大吗?
这个没测试过
引用: wangerxian 发表于 2023-7-20 10:40 FinSH这个组件我觉得是RTThread的精髓。
确实是,串口交互命令