Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
FinSH
MSH自定义命令的运行导致FinSH死掉了
发布于 2019-03-15 17:31:31 浏览:1668
订阅该版
使用FinSH自定义一个线程的运行命令,然后启动后再FinSH里面输入这个指令让线程运行。问题是,线程运行起来了,FinSH死掉了,再也输入不了命令。 ![2.jpg](https://oss-club.rt-thread.org/uploads/201903/15/173128m4kygoxbbkbxbkis.jpg)
查看更多
10
个回答
默认排序
按发布时间排序
insect2006
2019-03-15
这家伙很懒,什么也没写!
FinSH死掉的图如下,输入不了任何指令了:
insect2006
2019-03-15
这家伙很懒,什么也没写!
[i=s] 本帖最后由 insect2006 于 2019-3-15 17:34 编辑 [/i] 如果在线程的while(1)死循环里面加入break语句,让它只执行一次就退出。那么FinSH就不会死掉。
insect2006
2019-03-15
这家伙很懒,什么也没写!
请问,这是什么原因呢?
insect2006
2019-03-18
这家伙很懒,什么也没写!
没人知道吗?
morning559
2019-05-20
这家伙很懒,什么也没写!
>没人知道吗? --- 你好 我也遇到了你这个问题,不知道原因,不是说加上延时就相当于让出cpu了吗? 不知道为什么会一直阻塞在里面
cyz13
2019-05-20
这家伙很懒,什么也没写!
帮顶,我也遇到这样的问题
2pw
2019-05-20
这家伙很懒,什么也没写!
233,你这不叫创建线程。你要在这条命令里面rt_thread_create,这才是创建线程,然后start将线程交给系统管理。你直接放个while相当于是在fish自己的线程里面加个while卡住了,当然再也收不到数据
来一颗糖
2019-05-21
这家伙很懒,什么也没写!
同意 8 楼 按照这份 demo 试试吧 ``` /* * 程序清单:这是一个 串口 设备使用例程 * 例程导出了 uart_sample 命令到控制终端 * 命令调用格式:uart_sample uart2 * 命令解释:命令第二个参数是要使用的串口设备名称,为空则使用默认的串口设备 * 程序功能:通过串口输出字符串"hello RT-Thread!",然后错位输出输入的字符 */ #include
#define SAMPLE_UART_NAME "uart2" /* 用于接收消息的信号量 */ static struct rt_semaphore rx_sem; static rt_device_t serial; /* 接收数据回调函数 */ static rt_err_t uart_input(rt_device_t dev, rt_size_t size) { /* 串口接收到数据后产生中断,调用此回调函数,然后发送接收信号量 */ rt_sem_release(&rx_sem); return RT_EOK; } static void serial_thread_entry(void *parameter) { char ch; while (1) { /* 从串口读取一个字节的数据,没有读取到则等待接收信号量 */ while (rt_device_read(serial, -1, &ch, 1) != 1) { /* 阻塞等待接收信号量,等到信号量后再次读取数据 */ rt_sem_take(&rx_sem, RT_WAITING_FOREVER); } /* 读取到的数据通过串口错位输出 */ ch = ch + 1; rt_device_write(serial, 0, &ch, 1); } } static int uart_sample(int argc, char *argv[]) { rt_err_t ret = RT_EOK; char uart_name[RT_NAME_MAX]; char str[] = "hello RT-Thread!\r\n"; if (argc == 2) { rt_strncpy(uart_name, argv[1], RT_NAME_MAX); } else { rt_strncpy(uart_name, SAMPLE_UART_NAME, RT_NAME_MAX); } /* 查找系统中的串口设备 */ serial = rt_device_find(uart_name); if (!serial) { rt_kprintf("find %s failed!\n", uart_name); return RT_ERROR; } /* 初始化信号量 */ rt_sem_init(&rx_sem, "rx_sem", 0, RT_IPC_FLAG_FIFO); /* 以中断接收及轮询发送模式打开串口设备 */ rt_device_open(serial, RT_DEVICE_FLAG_INT_RX); /* 设置接收回调函数 */ rt_device_set_rx_indicate(serial, uart_input); /* 发送字符串 */ rt_device_write(serial, 0, str, (sizeof(str) - 1)); /* 创建 serial 线程 */ rt_thread_t thread = rt_thread_create("serial", serial_thread_entry, RT_NULL, 1024, 25, 10); /* 创建成功则启动线程 */ if (thread != RT_NULL) { rt_thread_startup(thread); } else { ret = RT_ERROR; } return ret; } /* 导出到 msh 命令列表中 */ MSH_CMD_EXPORT(uart_sample, uart device sample); ```
来一颗糖
2019-05-21
这家伙很懒,什么也没写!
[https://www.rt-thread.org/document/site/programming-manual/device/uart/uart/](https://www.rt-thread.org/document/site/programming-manual/device/uart/uart/) 这是文档中心
MurphyZhao
认证专家
2019-05-21
这家伙很懒,什么也没写!
大坑,你这是在Finsh 线程里执行了一个 while 死循环,怎么可能会再次进入 finsh 命令行。 你应该在 Task5uart2 函数里创建一个线程,再在线程里进行 while 循环。
撰写答案
登录
注册新账号
关注者
0
被浏览
1.7k
关于作者
insect2006
这家伙很懒,什么也没写!
提问
26
回答
85
被采纳
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
组件 lwip v2.0.3 版本使用 netdev网卡的 ping 功能
2
简单两步配置RTT源码阅读环境 vsc+clangd
3
恩智浦[FRDM-MCXN947]初探 之 ADC与DAC
4
LVGL使用字库IC芯片显示中文
5
基于STM32H750和Rt-Thread的CANFD通信实现的记录(一)
热门标签
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
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
SFUD
msh
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1443
个答案
289
次被采纳
张世争
807
个答案
174
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
4
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部