在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

開源輕量級單片機命令行交互項目

小麥大叔 ? 來源:gitee ? 作者:gitee ? 2022-05-23 09:52 ? 次閱讀

1、介紹

在進行調試和維護時,常常需要與單片機進行交互,獲取、設置某些參數或執行某些操作,nr_micro_shell正是為滿足這一需求,針對資源較少的MCU編寫的基本命令行工具。

雖然RT_Thread組件中已經提供了強大的finsh命令行交互工具,但對于ROM、RAM資源較少的單片機,finsh還是略顯的龐大,在這些平臺上,若仍想保留基本的命令行交互功能,nr_micro_shell是一個不錯的選擇。

項目地址:github.com/Nrusher/nr_micro_shell

nr_micro_shell具有以下優點

1.占用資源少,使用簡單,靈活方便。使用過程只涉及兩個shell_init()和shell()兩個函數,無論是使用RTOS還是裸機都可以方便的應用該工具,不需要額外的編碼工作。

2.交互體驗好。完全類似于linux shell命令行,當串口終端支持ANSI(如Hypertrm終端)時,其不僅支持基本的命令行交互,還提供Tab鍵命令補全,查詢歷史命令,方向鍵移動光標修改功能。

3.擴展性好。nr_micro_shell為用戶提供自定義命令的標準函數原型,只需要按照命令編寫命令函數,并注冊命令函數,即可使用命令。

nr_micro_shell和相同配置下的finsh (finsh不使用msh)占用資源對比

原始工程 添加nr_micro_shell增加量 添加finsh增加量
ROM 63660 +3832 +26908
RAM 4696 +1104 +1304

兩者配置都為

  • 最多3條歷史命令。
  • 支持Tab補全 。
  • 命令行最大長度為100。
  • 最多10個命令參數。
  • 命令行線程堆棧為512字節。

nr_micro_shell演示效果如下

8cb834b0-da3a-11ec-ba43-dac502259ad0.gif

8d08257e-da3a-11ec-ba43-dac502259ad0.gif

1.1 目錄結構

名稱 說明
docs 文檔目錄,包含演示的GIF圖片等
examples 例子目錄,包括命令函數示例:nr_micro_shell_commands.c 和RT_Thread下使用示例 nr_micro_shell_thread.c
inc 頭文件目錄
src 源代碼目錄

1.2 許可證

nr_micro_shell package 遵循 MIT 許可,詳見 LICENSE 文件。

1.3 依賴

無依賴

2、RT_Thread 下 ENV 工具使用

RT_Thread 使用 nr_micro_shell package package 需要在 RT-Thread 的包管理器中選擇它,具體路徑如下:

RT-Threadonlinepackages
toolspackages--->
[*]nr_micro_shell:Lightweightcommandlineinteractiontool.--->

相關的設置在按下sapce鍵選中后,按enter可進行相關參數配置。然后讓 RT-Thread 的包管理器自動更新,或者使用 pkgs --update 命令更新包到 BSP 中。

若您需要運行示例,請保證RT_Thread配置中的Using console for kt_printf.選項是被打開的,kt_printf可以正常工作,且Use components automatically initialization.選項打開。編譯直接下載仿真便可以使用nr_micro_shell。命令行空白時按Tab,可顯示所有支持的命令,測試示例命令可見doc/pic下的使用示例動圖。自定義命令過程,參照下文3. 裸機下使用nr_micro_shell package中的方法。

3、裸機下使用

3.1 配置:

所有配置工作都可以在 nr_micro_shell_config.h 中完成。有關詳細信息,請參見文件中的注釋。

3.2 用法:

  • 確保所有文件都已添加到項目中。

  • 確保 nr_micro_shell_config.h 中的宏函數"shell_printf(),ansi_show_char()"可以在項目中正常使用。

  • 使用示例如下

#include"nr_micro_shell.h"

intmain(void)
{
/*初始化*/
shell_init();

while(1)
{
if(USARTGETACHAR'c')
{
/*nr_micro_shell接收字符*/
shell(c);
}
}
}

建議直接使用硬件輸入前,建議使用如下代碼(確保可以正常打印信息),驗證nr_micro_shell是否可以正常運行

#include"nr_micro_shell.h"

intmain(void)
{
unsignedinti=0;
//匹配好結束符配置NR_SHELL_END_OF_LINE0
chartest_line[]="test123
"
/*初始化*/
shell_init();

/*初步測試代碼*/
for(i=0;isizeof(test_line)-1;i++)
{
shell(test_line[i]);
}

/*正式工作代碼*/
while(1)
{
if(USARTGETACHAR'c')
{
/*nr_micro_shell接收字符*/
shell(c);
}
}
}

3.3 添加自己的命令

STEP1:

您需要在nr_micro_shell_commands.c*中實現一個命令函數。命令函數的原型如下

voidyour_command_funtion(charargc,char*argv)
{
.....
}

argc是參數的數目。argv存儲每個參數的起始地址和內容。如果輸入字符串是

test-a1

argc為3,argv的內容為

-------------------------------------------------------------
0x03|0x08|0x0b|'t'|'e'|'s'|'t'|'?'|'-'|'a'|'?'|'1'|'?'|
-------------------------------------------------------------

如果想知道第一個或第二個參數的內容,應該使用

/*"-a"*/
printf(argv[argv[1]])
/*"1"*/
printf(argv[argv[2]])

STEP2:在使用命令前需要注冊命令,共有兩種方法注冊命令

1.當配置文件中NR_SHELL_USING_EXPORT_CMD未被定義,在static_cmd[]表中寫入

conststatic_cmd_ststatic_cmd[]=
{
.....
{"your_command_name",your_command_funtion},
.....
{"?",NULL}
};

注意:不要刪除{"?",NULL}!

2.當配置文件中NR_SHELL_USING_EXPORT_CMD被定義,且NR_SHELL_CMD_EXPORT()支持使用的編譯器時,可以使用以下方式注冊命令

NR_SHELL_CMD_EXPORT(your_command_name,your_command_funtion);

4、linux下使用nr_micro_shell仿真

在工程./examples/simulator/目錄下存放著nr_micro_shell仿真代碼,仍在./examples/nr_micro_shell_commands.c文件中按上述方式添加自定義命令,添加完成后可以使用make命令編譯源碼,生產的可執行文件為./examples/simulator/out/nr_micro_shell./examples/simulator/out/nr_micro_shell_db。可使用的make命令如下

#編譯可執行文件
make
#編譯可仿真執行文件
makedebug
#清除編譯生成文件
makeclean

5、注意事項

根據你的使用習慣使用NR_SHELL_USING_EXPORT_CMD選擇命令注冊方式。

使用注冊表注冊命令時,確保您的工程中存在注冊表

conststatic_cmd_ststatic_cmd[]=
{
.....
{"?",NULL}
};

使用NR_SHELL_CMD_EXPORT()時確保,NR_SHELL_CMD_EXPORT()支持使用的編譯器,否則會報錯。

nr_micro_shell 不支持ESC鍵等控制鍵(控制符)。

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6044

    文章

    44655

    瀏覽量

    640409
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17422

    瀏覽量

    353599
  • 函數
    +關注

    關注

    3

    文章

    4351

    瀏覽量

    63200

原文標題:輕量級單片機命令行交互項目,全部開源

文章出處:【微信號:knifewheat,微信公眾號:小麥大叔】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    單片機Debug工具性能對比 單片機調試常用命令

    單片機(Microcontroller Unit, MCU)調試是嵌入式開發中的一個重要環節,它幫助開發者發現和修復代碼中的錯誤,優化程序性能。不同的單片機和開發環境可能使用不同的調試工具和命令
    的頭像 發表于 12-19 09:56 ?635次閱讀

    圖形用戶界面與命令行接口的比較

    在計算機科學和信息技術領域,用戶與計算機交互的方式主要分為兩種:圖形用戶界面(GUI)和命令行接口(CLI)。這兩種界面各有優勢和局限性,適用于不同的場景和用戶需求。 1. 定義與基本特征 圖形用戶
    的頭像 發表于 11-12 14:38 ?672次閱讀

    Mobaxterm 的命令行使用方法

    的遠程桌面協議(如RDP和VNC),以及文件傳輸協議(如FTP和SFTP)。本文將詳細介紹如何使用Mobaxterm的命令行功能。 2. 安裝 Mobaxterm 在開始之前,確保你已經安裝
    的頭像 發表于 11-11 09:08 ?2635次閱讀

    APM32F411板的python+pyocd命令行操作

    前段時間學習了一下如何使用pyocd配合APM32F411VCTINY板在命令行下給它進行各種騷操作,在使用一段時間后就想著:pyocd是基于python的,那是不是也可以使用python腳本+pyocd使用起來呢?
    的頭像 發表于 10-18 16:21 ?500次閱讀
    APM32F411板的python+pyocd<b class='flag-5'>命令行</b>操作

    國產芯上運行TinyMaxi輕量級的神經網絡推理庫-米爾基于芯馳D9國產商顯板

    是面向單片機的超輕量級的神經網絡推理庫,即 TinyML 推理庫,可以讓你在任意單片機上運行輕量級深度學習模型~ 開源地址:https:/
    發表于 08-09 18:26

    國產芯上運行TinyMaxi輕量級的神經網絡推理庫-米爾基于芯馳D9國產商顯板

    D9360國產開發板)的TinyMaxi輕量級的神經網絡推理庫方案測試。 算力測試 TinyMaix 是面向單片機的超輕量級的神經網絡推理庫,即 TinyML 推理庫,可以讓你在任意單片機
    發表于 08-07 18:06

    國產芯上運行TinyMaxi輕量級的神經網絡推理庫-米爾基于芯馳D9國產商顯板

    TinyMaix是面向單片機的超輕量級的神經網絡推理庫,即TinyML推理庫,可以讓你在任意單片機上運行輕量級深度學習模型~開源地址:htt
    的頭像 發表于 07-05 08:02 ?1981次閱讀
    國產芯上運行TinyMaxi<b class='flag-5'>輕量級</b>的神經網絡推理庫-米爾基于芯馳D9國產商顯板

    鴻蒙ArkUI-X跨平臺開發:【命令行工具(ACE Tools)】

    ACE Tools是一套為ArkUI-X項目跨平臺應用開發者提供的命令行工具,支持在Windows/Ubuntu/macOS平臺運行,用于構建OpenHarmony/HarmonyOS、Android和iOS平臺的應用程序,其功能包括開發環境檢查,新建
    的頭像 發表于 05-21 17:39 ?2117次閱讀
    鴻蒙ArkUI-X跨平臺開發:【<b class='flag-5'>命令行</b>工具(ACE Tools)】

    高效云端管理的秘訣——華為云命令行工具 KooCLI

    發現了云上命令行工具,我的云端管理效率從此得到了質的飛躍。 我從華為云官方產品幫助文檔中了解了 KooCLI 工具,文檔中介紹的便捷操作和高效管理讓我心動不已,于是,我開啟了我的體驗。通過簡單的命令行輸入,我能夠快速完成
    的頭像 發表于 05-10 00:25 ?754次閱讀
    高效云端管理的秘訣——華為云<b class='flag-5'>命令行</b>工具 KooCLI

    鴻蒙OpenHarmony南向:【Hi3516標準系統入門(命令行方式)】

    除小型系統外,Hi3516DV300開發板還支持標準系統。此章節簡要介紹如何使用命令行在Hi3516DV300開發板上進行標準系統的開發。
    的頭像 發表于 05-08 09:26 ?988次閱讀
    鴻蒙OpenHarmony南向:【Hi3516標準系統入門(<b class='flag-5'>命令行</b>方式)】

    STM8 flash loader命令行調用錯誤的原因?

    [td]我目前在用flash loader的命令行,編寫自己的上位軟件來升級程序,但是在用命令行調用的時候一直出錯,有人能幫忙分析下嗎? 我編寫的bat文件
    發表于 05-06 07:23

    HarmonyOS開發:【基于命令行(安裝庫和工具集)】

    使用命令行進行設備開發時,可以通過以下步驟安裝編譯OpenHarmony需要的庫和工具。
    的頭像 發表于 04-25 21:03 ?525次閱讀
    HarmonyOS開發:【基于<b class='flag-5'>命令行</b>(安裝庫和工具集)】

    香港vps的centos如何切換命令行和桌面?

    要在CentOS上切換命令行和桌面環境,您可以通過以下步驟進行: 1、安裝桌面環境:如果您的CentOS VPS上還沒有安裝圖形桌面環境,您需要安裝一個。一般來說,常用的桌面環境有GNOME、KDE
    的頭像 發表于 04-10 17:41 ?751次閱讀

    STM32G070RB使用jlink命令行下載無法識別芯片怎么解決?

    STM32G070RB 使用jlink命令行下載無法識別芯片,想手動添加芯片,請問哪里可以下載驅動.elf文件 或者有什么方法能夠實現jlink命令行下載
    發表于 04-02 06:15

    人機交互的三個階段 人機交互的常用方式

    交互經歷的三個階段:命令行界面交互階段、圖形用戶界面交互階段、自然和諧的人機交互階段。
    的頭像 發表于 03-13 17:25 ?3519次閱讀
    主站蜘蛛池模板: 亚洲综合欧美日本另类激情 | 香蕉午夜视频 | 日本高清视频色www在线观看 | 在线天堂中文 | 天天碰天天干 | 男人操女人视频免费 | 美女一级牲交毛片视频 | 日本网络视频www色高清免费 | 日本精品卡一卡2卡3卡四卡三卡 | 国产午夜精品片一区二区三区 | 在线久综合色手机在线播放 | 天堂影 | 鲁丝一区二区三区 | 亚洲第一区在线 | 国产99在线播放免费 | 欧美18性欧美丶黑吊 | 色多多高清在线观看视频www | 欧美激情二区三区 | 激情五月婷婷在线 | 免费被视频网站在线观看 | 欧美成人午夜影院 | 美女午夜 | 一日本道加勒比高清一二三 | 亚洲第八页 | 国产网站免费 | 欧美激情第一欧美在线 | 日本黄色一区 | 我爱操| 中文字幕第11页 | 国产精品一区牛牛影视 | 国产网站黄 | 国产美女视频免费 | 狠狠干夜夜操 | yy6080亚洲半夜理论一级毛片 | miya亚洲私人影院在线 | 丁香花在线观看免费观看 | www一级毛片 | 一区二区三区视频网站 | 亚洲欧美一区二区久久香蕉 | 日本资源在线观看 | 天堂在线观看免费视频 |