# QShell **Repository Path**: DNUI/qshell ## Basic Information - **Project Name**: QShell - **Description**: QShell(V0.3.0)项目是一个用于微控制器等应用的简易Shell命令行工具库, 可以快速简便地嵌入任何需要的应用 - **Primary Language**: C - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 0 - **Created**: 2021-07-04 - **Last Updated**: 2023-04-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: shell, mcu, command ## README # JHShell ### 介绍 JHShell(V0.3.0)项目是Larry Zhang(work@zjhhome.com)开发的用于微控制器等应用的简易Shell命令行工具库, 使用解耦方式设计,可以快速简便地嵌入任何需要的应用。 ### 使用说明 1. 在中断服务函数中使用shell_input函数传入从串口等输入设备得到的字符。 2. 在短运行周期的独立任务或定时器中断中使用shell_output函数输出shell的标准输出。 3. 为Shell_Run准备独立的任务或根据定时器中断控制的主循环,可以与输出共用,但务必注意可能发生的死锁现象。 4. 使用操作系统时需要在Shell任务的循环前使用Shell_Init初始化Shell。 5. 裸机运行时需要在初始化完毕所有外设后(尤其是为Shell准备的输入输出设备)立即使用Shell_Init初始化Shell。 6. 在使用Shell_Init初始化Shell时需要提前实现3个主要系统函数接口(参见shell.h中的ShellInitStructDef结构体)。 7. 在shell_command.c中包含或编写自定义的命令。 8. 强烈建议不要删除或修改预设的4个命令。 9. 请在version.h中定义当前使用的操作系统和Shell版本(一定要删除预设命令的除外)。 10. 推荐的输出队列长度为至少两倍于标准输出函数的调度周期所能够输出的字节个数且能够一次性容纳所有可能的单次输出(因为没有提供输出时队满的任务阻塞等待,后续版本提供)。 11. 推荐的输入队列长度为至少能够一次性容纳所有可能的单次输入(没有合适的办法要求输入设备等待)。 12. 本项目使用GPL3.0协议,您可以自由的进行使用、修改和二次分发,但必须将改动部分开源并使用与本项目相同的许可协议。如您真的需要以商业应用使用本代码且不愿意开源,请联系我并允许我公开嘲笑您一番后为您单独许可。 13. 祝您使用愉快。 14. (21/7/7补充)请注意,由于标准输入输出队列将占用较大的堆空间(队列默认共512字节,推荐的堆大小至少为1kb,0x400),请务必确保分配的堆栈区域足以容纳所有的静态或全局数据。 ### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request