一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

1、介紹

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

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

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

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

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

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

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

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

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

兩者配置都為

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

nr_micro_shell演示效果如下

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

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

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

名稱 說明
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 許可,詳見 LICENSE 文件。

1.3 依賴

無依賴

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 的包管理器自動更新,或者使用 pkgs --update 命令更新包到 BSP 中。

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

3、裸機(jī)下使用

3.1 配置:

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

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();

/*初步測試代碼*/
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)一個命令函數(shù)。命令函數(shù)的原型如下

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

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

test-a1

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

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

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

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

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

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

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

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

2.當(dāng)配置文件中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命令編譯源碼,生產(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選擇命令注冊方式。

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

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

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

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

審核編輯 :李倩

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

    關(guān)注

    6067

    文章

    44992

    瀏覽量

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

    關(guān)注

    146

    文章

    17984

    瀏覽量

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

    關(guān)注

    3

    文章

    4381

    瀏覽量

    64878

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

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

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

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

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

    請問如何通過S32K312命令行構(gòu)建代碼?

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

    【ELF 2學(xué)習(xí)板試用】命令行功能測試-shell腳本進(jìn)行IO控制-紅綠燈項(xiàng)目-實(shí)現(xiàn)開機(jī)起動

    接上文【ELF 2學(xué)習(xí)板試用】命令行功能測試-shell腳本進(jìn)行IO控制-紅綠燈項(xiàng)目 Linux 系統(tǒng)下 init 系統(tǒng) 大多數(shù) Linux 發(fā)行版的 init 系統(tǒng)是和 System V 相兼容
    發(fā)表于 02-11 11:24

    curl wget bond:深入解析命令行工具的差異與應(yīng)用場景

    curl curl 是一個用于與服務(wù)器進(jìn)行數(shù)據(jù)傳輸?shù)?b class='flag-5'>命令行工具。它支持多種協(xié)議,包括 HTTP、HTTPS、 FTP 等。 基本用法 獲取網(wǎng)頁內(nèi)容: curl http://example.com
    的頭像 發(fā)表于 01-24 09:20 ?446次閱讀

    一款Cursor開源替代工具之Roo-Cline

    ,甚至可以命令行交互,以及打開瀏覽器做基于 AI 的交互測試! 下面是 Roo-Cline 的核心功能展示: 使用任何 API 和模型 Cline 支持 OpenRou
    的頭像 發(fā)表于 01-09 10:27 ?3117次閱讀
    一款Cursor<b class='flag-5'>開源</b>替代工具之Roo-Cline

    華為Flexus云服務(wù)器搭建SamWaf開源輕量級網(wǎng)站防火墻

    在當(dāng)今數(shù)字化高速發(fā)展的時代,網(wǎng)絡(luò)安全問題日益凸顯。為了保障網(wǎng)站的穩(wěn)定運(yùn)行和數(shù)據(jù)安全,我們可以借助華為 Flexus 云服務(wù)器搭建 SamWaf 開源輕量級網(wǎng)站防火墻。這不僅是一次技術(shù)的挑戰(zhàn),更是為網(wǎng)站筑牢安全防線的重要舉措。
    的頭像 發(fā)表于 12-29 16:59 ?744次閱讀
    華為Flexus云服務(wù)器搭建SamWaf<b class='flag-5'>開源</b><b class='flag-5'>輕量級</b>網(wǎng)站防火墻

    單片機(jī)Debug工具性能對比 單片機(jī)調(diào)試常用命令

    單片機(jī)(Microcontroller Unit, MCU)調(diào)試是嵌入式開發(fā)中的一個重要環(huán)節(jié),它幫助開發(fā)者發(fā)現(xiàn)和修復(fù)代碼中的錯誤,優(yōu)化程序性能。不同的單片機(jī)和開發(fā)環(huán)境可能使用不同的調(diào)試工具和命令
    的頭像 發(fā)表于 12-19 09:56 ?1419次閱讀

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

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

    Mobaxterm 的命令行使用方法

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

    如何優(yōu)化單片機(jī)項(xiàng)目的功耗

    在現(xiàn)代電子設(shè)計中,功耗優(yōu)化已成為一個不可忽視的重要議題。對于單片機(jī)(MCU)項(xiàng)目而言,功耗不僅關(guān)系到產(chǎn)品的能效比,還直接影響到電池壽命和熱管理。 硬件層面的功耗優(yōu)化 1. 選擇合適的單片機(jī) 選擇一個
    的頭像 發(fā)表于 11-01 14:16 ?1296次閱讀

    APM32F411板的python+pyocd命令行操作

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

    國產(chǎn)芯上運(yùn)行TinyMaxi輕量級的神經(jīng)網(wǎng)絡(luò)推理庫-米爾基于芯馳D9國產(chǎn)商顯板

    是面向單片機(jī)的超輕量級的神經(jīng)網(wǎng)絡(luò)推理庫,即 TinyML 推理庫,可以讓你在任意單片機(jī)上運(yùn)行輕量級深度學(xué)習(xí)模型~ 開源地址:https:/
    發(fā)表于 08-09 18:26

    國產(chǎn)芯上運(yùn)行TinyMaxi輕量級的神經(jīng)網(wǎng)絡(luò)推理庫-米爾基于芯馳D9國產(chǎn)商顯板

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

    Windows操作系統(tǒng)中的常用命令

    Windows操作系統(tǒng)提供了許多實(shí)用的命令行工具,通過命令行界面(Command Prompt)或Windows PowerShell,用戶可以執(zhí)行各種任務(wù),如文件管理、系統(tǒng)維護(hù)、網(wǎng)絡(luò)配置等。掌握
    的頭像 發(fā)表于 08-07 15:40 ?1171次閱讀
    Windows操作系統(tǒng)中的常用<b class='flag-5'>命令</b>