Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
FinSH
串口
控制台
FINSH输入特定字符后命令行卡死
发布于 2024-11-23 14:56:39 浏览:58
订阅该版
现在我通过CubeMX生成了STM32H743ZITx的RT-Thread工程。 然后开启了如下的功能: ```c /* RT-Thread config file */ #ifndef __RTTHREAD_CFG_H__ #define __RTTHREAD_CFG_H__ // <<< Use Configuration Wizard in Context Menu >>> //
Basic Configuration //
Maximal level of thread priority <8-256> //
Default: 32 #define RT_THREAD_PRIORITY_MAX 32 //
OS tick per second //
Default: 1000 (1ms) #define RT_TICK_PER_SECOND 1000 //
Alignment size for CPU architecture data access //
Default: 4 #define RT_ALIGN_SIZE 4 //
the max length of object name<2-16> //
Default: 8 #define RT_NAME_MAX 8 //
Using RT-Thread components initialization //
Using RT-Thread components initialization #define RT_USING_COMPONENTS_INIT // //
Using user main //
Using user main #define RT_USING_USER_MAIN // //
the size of main thread<1-4086> //
Default: 512 #define RT_MAIN_THREAD_STACK_SIZE 1024 //
//
Debug Configuration //
enable kernel debug configuration //
Default: enable kernel debug configuration #define RT_DEBUG // //
enable components initialization debug configuration<0-1> //
Default: 0 #define RT_DEBUG_INIT 1 //
thread stack over flow detect //
Diable Thread stack over flow detect #define RT_USING_OVERFLOW_CHECK // //
//
Hook Configuration //
using hook //
using hook #define RT_USING_HOOK // //
using idle hook //
using idle hook #define RT_USING_IDLE_HOOK // //
//
Software timers Configuration //
Enables user timers //
Enables user timers #define RT_USING_TIMER_SOFT // //
The priority level of timer thread <0-31> //
Default: 4 #define RT_TIMER_THREAD_PRIO 4 //
The stack size of timer thread <0-8192> //
Default: 512 #define RT_TIMER_THREAD_STACK_SIZE 512 //
//
IPC(Inter-process communication) Configuration //
Using Semaphore //
Using Semaphore #define RT_USING_SEMAPHORE // //
Using Mutex //
Using Mutex #define RT_USING_MUTEX // //
Using Event //
Using Event #define RT_USING_EVENT // //
Using MailBox //
Using MailBox #define RT_USING_MAILBOX // //
Using Message Queue //
Using Message Queue #define RT_USING_MESSAGEQUEUE // //
//
Memory Management Configuration //
Using Mempool Management //
Using Mempool Management #define RT_USING_MEMPOOL // //
Dynamic Heap Management //
Dynamic Heap Management #define RT_USING_HEAP // //
using small memory //
using small memory #define RT_USING_SMALL_MEM // //
using tiny size of memory //
using tiny size of memory #define RT_USING_TINY_SIZE // //
//
Console Configuration //
Using console //
Using console #define RT_USING_CONSOLE // //
the buffer size of console <1-1024> //
the buffer size of console //
Default: 128 (128Byte) #define RT_CONSOLEBUF_SIZE 128 //
//
Enable FinSH Configuration //
include shell config //
Select this choice if you using FinSH #include "finsh_config.h" // //
//
Device Configuration //
using device framework //
using device framework #define RT_USING_DEVICE // //
// <<< end of configuration section >>> #endif ``` 系统进入的时候可以正常进入MSH命令行,但是当输入中文字符或使用上下左右键的时候,命令行卡死,无法输入或输出数据。但是程序我通过打断点发现没有挂掉。这个是什么原因啊? 同时,我发现,生成的工程中没有如下函数: ```c static int stm32_getc(struct rt_serial_device *serial) { int ch; struct stm32_uart *uart; RT_ASSERT(serial != RT_NULL); uart = rt_container_of(serial, struct stm32_uart, serial); ch = -1; if (USART_GetITStatus(uart->handleInstance, USART_IT_RXNE) != RESET) { #if defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32F7) || defined(SOC_SERIES_STM32F0) \ || defined(SOC_SERIES_STM32L0) || defined(SOC_SERIES_STM32G0) || defined(SOC_SERIES_STM32H7) \ || defined(SOC_SERIES_STM32G4) ch = uart->config->Instance->RDR & 0xff; #else ch = uart->config->Instance->DR & 0xff; #endif } return ch; } ``` 但是系统可以正常进入命令行。代码因为涉及到一些加密的东西,所以不能全部上传。 RT-Thread的版本是RT-Thread 3.1.5,有哪位大佬可以帮忙解决一下该问题吗?万分感谢!!!!
查看更多
1
个回答
默认排序
按发布时间排序
Guoxuanmingr
1天前
这家伙很懒,什么也没写!
后来发现是串口出现了ORE情况导致的,请问下这个ORE问题怎么进行解决呢?目前我的解决方法是在这个函数中进行了如下的修改: ```c #ifdef RT_USING_FINSH char rt_hw_console_getchar(void) { /* Note: the initial value of ch must < 0 */ int ch = -1; //TODO if (__HAL_UART_GET_FLAG(&UartHandle, UART_FLAG_ORE) != RESET) { rt_kprintf("UART ORE error occurred.Operation not permitted,please retry....\n"); __HAL_UART_CLEAR_OREFLAG(&UartHandle); } if (__HAL_UART_GET_FLAG(&UartHandle, UART_FLAG_RXNE) != RESET) { ch = UartHandle.Instance->RDR & 0xff; } else { rt_thread_mdelay(10); } return ch; } ``` 这样的话,即使输入出现错误也能够及时清除标志位,让后面的接收正常进行。 但是我试了一下,在中断中使用该清除标志位的操作,连中断都进不去,没有办法清除该标志位。 请问哪位大佬能够有更好的解决方法?小弟先拜为敬。
撰写答案
登录
注册新账号
关注者
0
被浏览
58
关于作者
Guoxuanmingr
这家伙很懒,什么也没写!
提问
2
回答
1
被采纳
0
关注TA
发私信
相关问题
1
RT-THREAD shell无反应呢?
2
RT-thread2.0beta下用类似linux风格MSH,参数如何输入和导出
3
rt-thread finsh windows下的那个终端软件叫什么来着
4
板子上只有485接口,能把FINSH改造成485的么?
5
finsh最大字符问题
6
finsh命令个数是不是有限制啊
7
finsh支持转义字符吗
8
不用finsh如何知道堆栈使用量
9
强烈建议 RT-Thread下finsh原理深入分析
10
finsh输入命令全部返回null node
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
【24嵌入式设计大赛】基于RT-Thread星火一号的智慧家居系统
2
RT-Thread EtherKit开源以太网硬件正式发布
3
如何在master上的BSP中添加配置yml文件
4
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
5
RT-Thread 发布 EtherKit开源以太网硬件!
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
MicroPython
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
19
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
6
个答案
2
次被采纳
用户名由3_15位
13
个答案
1
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
5
次点赞
RTT_逍遥
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部