91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

開(kāi)源輕量級(jí)單片機(jī)命令行交互項(xiàng)目

小麥大叔 ? 來(lái)源:gitee ? 作者:gitee ? 2022-05-23 09:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1、介紹

在進(jìn)行調(diào)試和維護(hù)時(shí),常常需要與單片機(jī)進(jìn)行交互,獲取、設(shè)置某些參數(shù)或執(zhí)行某些操作,nr_micro_shell正是為滿足這一需求,針對(duì)資源較少的MCU編寫(xiě)的基本命令行工具。

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

項(xiàng)目地址:github.com/Nrusher/nr_micro_shell

nr_micro_shell具有以下優(yōu)點(diǎn)

1.占用資源少,使用簡(jiǎn)單,靈活方便。使用過(guò)程只涉及兩個(gè)shell_init()和shell()兩個(gè)函數(shù),無(wú)論是使用RTOS還是裸機(jī)都可以方便的應(yīng)用該工具,不需要額外的編碼工作。

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

3.擴(kuò)展性好。nr_micro_shell為用戶提供自定義命令的標(biāo)準(zhǔn)函數(shù)原型,只需要按照命令編寫(xiě)命令函數(shù),并注冊(cè)命令函數(shù),即可使用命令。

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

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

兩者配置都為

  • 最多3條歷史命令。
  • 支持Tab補(bǔ)全 。
  • 命令行最大長(zhǎng)度為100。
  • 最多10個(gè)命令參數(shù)。
  • 命令行線程堆棧為512字節(jié)。

nr_micro_shell演示效果如下

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

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

1.1 目錄結(jié)構(gòu)

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

1.2 許可證

nr_micro_shell package 遵循 MIT 許可,詳見(jiàn) LICENSE 文件。

1.3 依賴

無(wú)依賴

2、RT_Thread 下 ENV 工具使用

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

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

相關(guān)的設(shè)置在按下sapce鍵選中后,按enter可進(jìn)行相關(guān)參數(shù)配置。然后讓 RT-Thread 的包管理器自動(dòng)更新,或者使用 pkgs --update 命令更新包到 BSP 中。

若您需要運(yùn)行示例,請(qǐng)保證RT_Thread配置中的Using console for kt_printf.選項(xiàng)是被打開(kāi)的,kt_printf可以正常工作,且Use components automatically initialization.選項(xiàng)打開(kāi)。編譯直接下載或仿真便可以使用nr_micro_shell。命令行空白時(shí)按Tab,可顯示所有支持的命令,測(cè)試示例命令可見(jiàn)doc/pic下的使用示例動(dòng)圖。自定義命令過(guò)程,參照下文3. 裸機(jī)下使用nr_micro_shell package中的方法。

3、裸機(jī)下使用

3.1 配置:

所有配置工作都可以在 nr_micro_shell_config.h 中完成。有關(guān)詳細(xì)信息,請(qǐng)參見(jiàn)文件中的注釋。

3.2 用法:

  • 確保所有文件都已添加到項(xiàng)目中。

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

  • 使用示例如下

#include"nr_micro_shell.h"

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

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

建議直接使用硬件輸入前,建議使用如下代碼(確??梢哉4蛴⌒畔?,驗(yàn)證nr_micro_shell是否可以正常運(yùn)行

#include"nr_micro_shell.h"

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

/*初步測(cè)試代碼*/
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*中實(shí)現(xiàn)一個(gè)命令函數(shù)。命令函數(shù)的原型如下

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

argc是參數(shù)的數(shù)目。argv存儲(chǔ)每個(gè)參數(shù)的起始地址和內(nèi)容。如果輸入字符串是

test-a1

argc為3,argv的內(nèi)容為

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

如果想知道第一個(gè)或第二個(gè)參數(shù)的內(nèi)容,應(yīng)該使用

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

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

1.當(dāng)配置文件中NR_SHELL_USING_EXPORT_CMD未被定義,在static_cmd[]表中寫(xiě)入

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

注意:不要?jiǎng)h除{"?",NULL}!

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

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命令編譯源碼,生產(chǎn)的可執(zhí)行文件為./examples/simulator/out/nr_micro_shell./examples/simulator/out/nr_micro_shell_db??墒褂玫膍ake命令如下

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

5、注意事項(xiàng)

根據(jù)你的使用習(xí)慣使用NR_SHELL_USING_EXPORT_CMD選擇命令注冊(cè)方式。

使用注冊(cè)表注冊(cè)命令時(shí),確保您的工程中存在注冊(cè)表

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

使用NR_SHELL_CMD_EXPORT()時(shí)確保,NR_SHELL_CMD_EXPORT()支持使用的編譯器,否則會(huì)報(bào)錯(cuò)。

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

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6077

    文章

    45521

    瀏覽量

    671946
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    147

    文章

    19012

    瀏覽量

    400295
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4419

    瀏覽量

    67682

原文標(biāo)題:輕量級(jí)單片機(jī)命令行交互項(xiàng)目,全部開(kāi)源

文章出處:【微信號(hào):knifewheat,微信公眾號(hào):小麥大叔】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    NXP 產(chǎn)品包裝革新:輕量級(jí)卷軸的引入

    NXP 產(chǎn)品包裝革新:輕量級(jí)卷軸的引入 一、通知概述 NXP 在 2014 年 3 月 30 日發(fā)布了編號(hào)為 201403006I 的客戶信息通知,該通知于 2014 年 4 月 30 日生效
    的頭像 發(fā)表于 03-25 14:10 ?49次閱讀

    運(yùn)維工程師必須掌握的10個(gè)系統(tǒng)命令

    系統(tǒng)命令是運(yùn)維工程師與服務(wù)器交互的基礎(chǔ)工具。雖然現(xiàn)代運(yùn)維工作有大量的自動(dòng)化工具和平臺(tái),但掌握核心系統(tǒng)命令仍然必要。命令行工具響應(yīng)速度快、不依賴圖形界面、可以組合使用應(yīng)對(duì)復(fù)雜場(chǎng)景。在服務(wù)
    的頭像 發(fā)表于 03-23 10:28 ?102次閱讀

    內(nèi)存漲價(jià)、供應(yīng)不穩(wěn)?嵌入式工程師必看:適合輕量級(jí)項(xiàng)目ARM選型與存儲(chǔ)避坑指南

    在嵌入式開(kāi)發(fā)的圈子里,很多工程師都經(jīng)歷過(guò)這種“陣痛”: 原本用得好好的高性能單片機(jī)(MCU),隨著項(xiàng)目需求的增加——要接個(gè)高分辨率屏、要做個(gè)復(fù)雜的協(xié)議轉(zhuǎn)換、要跑個(gè)輕量級(jí)語(yǔ)音識(shí)別,或者要處理多路音頻
    的頭像 發(fā)表于 03-11 18:45 ?1177次閱讀
    內(nèi)存漲價(jià)、供應(yīng)不穩(wěn)?嵌入式工程師必看:適合<b class='flag-5'>輕量級(jí)</b><b class='flag-5'>項(xiàng)目</b>ARM選型與存儲(chǔ)避坑指南

    Kubernetes kubectl命令行工具詳解

    kubectl是Kubernetes官方提供的命令行工具,作為與Kubernetes集群交互的主要接口,它通過(guò)調(diào)用Kubernetes API Server實(shí)現(xiàn)對(duì)集群資源的全面管理。在生產(chǎn)環(huán)境中,運(yùn)維工程師需要熟練掌握kubectl命令
    的頭像 發(fā)表于 02-02 16:40 ?514次閱讀

    命令行阿里千問(wèn)搭建過(guò)程

    克隆千問(wèn)倉(cāng)庫(kù),安裝依賴; 下載模型權(quán)重; 命令行執(zhí)行啟動(dòng)腳本,配置參數(shù)后運(yùn)行推理。
    發(fā)表于 12-24 10:35

    單片機(jī)的操作系統(tǒng)

    單片機(jī)操作系統(tǒng)主要分為實(shí)時(shí)操作系統(tǒng)(RTOS)和嵌入式操作系統(tǒng)兩類,以下是常見(jiàn)選擇: 實(shí)時(shí)操作系統(tǒng)(RTOS) ? FreeRTOS ?:輕量級(jí)開(kāi)源內(nèi)核(最小內(nèi)核約6 KB RAM),支持優(yōu)先級(jí)
    發(fā)表于 11-14 06:18

    所見(jiàn)即所得——Luban-Lite VS Code插件讓開(kāi)發(fā)實(shí)現(xiàn)“命令行自由”

    NEWS所見(jiàn)即所得!Luban-LiteVSCode插件指南親愛(ài)的開(kāi)發(fā)者朋友們,你是否還在為嵌入式開(kāi)發(fā)中頻繁切換命令行而抓狂?配置環(huán)境參數(shù)如“走迷宮”,編譯燒錄還需切換AiBurn?今天,匠芯創(chuàng)為您
    的頭像 發(fā)表于 08-07 15:38 ?1147次閱讀
    所見(jiàn)即所得——Luban-Lite VS Code插件讓開(kāi)發(fā)實(shí)現(xiàn)“<b class='flag-5'>命令行</b>自由”

    基于米爾瑞芯微RK3576開(kāi)發(fā)板部署運(yùn)行TinyMaix:超輕量級(jí)推理框架

    本文將介紹基于米爾電子MYD-LR3576開(kāi)發(fā)平臺(tái)部署超輕量級(jí)推理框架方案:TinyMaix 摘自優(yōu)秀創(chuàng)作者-短笛君 TinyMaix 是面向單片機(jī)的超輕量級(jí)的神經(jīng)網(wǎng)絡(luò)推理庫(kù),即 TinyML
    發(fā)表于 07-25 16:35

    如何在RK3576開(kāi)發(fā)板上運(yùn)行TinyMaix :超輕量級(jí)推理框架--基于米爾MYD-LR3576開(kāi)發(fā)板

    本文將介紹基于米爾電子MYD-LR3576開(kāi)發(fā)平臺(tái)部署超輕量級(jí)推理框架方案:TinyMaix摘自優(yōu)秀創(chuàng)作者-短笛君TinyMaix是面向單片機(jī)的超輕量級(jí)的神經(jīng)網(wǎng)絡(luò)推理庫(kù),即TinyML推理庫(kù),可以
    的頭像 發(fā)表于 07-25 08:03 ?4304次閱讀
    如何在RK3576開(kāi)發(fā)板上運(yùn)行TinyMaix :超<b class='flag-5'>輕量級(jí)</b>推理框架--基于米爾MYD-LR3576開(kāi)發(fā)板

    解析K8S實(shí)用命令

    前言: 作為運(yùn)維工程師,掌握 Kubernetes 命令行工具是日常工作的核心技能。本文將深入解析 K8S 最實(shí)用的命令,從基礎(chǔ)操作到高級(jí)技巧,助你成為容器化集群管理專家。
    的頭像 發(fā)表于 07-24 14:07 ?931次閱讀

    USB串行配置實(shí)用程序是否有可用的命令行版本?

    USB串行配置實(shí)用程序是否有可用的命令行版本?
    發(fā)表于 07-22 08:09

    【RA-Eco-RA6M4開(kāi)發(fā)板評(píng)測(cè)】移植shell實(shí)現(xiàn)命令交互

    *)g_shell_cmd_list_ast, 1); 執(zhí)行 while(1){shell_exec();} 三. 測(cè)試輸入help查看支持的命令 四. 總結(jié)以上基于串口接口即可快速的移植shell,這樣 就可以方便添加命令行實(shí)現(xiàn)交互
    發(fā)表于 07-19 22:47

    淺談wsl --update` 命令行選項(xiàng)無(wú)效的解決方案

    PS C:\Users\Administrator> wsl --update >> 命令行選項(xiàng)無(wú)效: --update
    的頭像 發(fā)表于 06-27 10:28 ?1.2w次閱讀

    aurix development studio無(wú)法用命令行編譯工程的原因?

    aurix development studio無(wú)法用命令行編譯工程
    發(fā)表于 04-18 06:50

    請(qǐng)問(wèn)如何通過(guò)S32K312命令行構(gòu)建代碼?

    現(xiàn)在我們已經(jīng)通過(guò) S32DS3.5 IDE 開(kāi)發(fā)了固件,它也可以工作了。 最近,我們收到了通過(guò)命令行構(gòu)建代碼的要求,并且 我從 S32DS 幫助內(nèi)容中讀取了相關(guān)文檔,但這種情況會(huì)發(fā)生 有關(guān) JAVA
    發(fā)表于 04-09 07:48