中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. "); //-->

        博客專欄

        EEPW首頁 > 博客 > 輕量級單片機(jī)命令行交互項(xiàng)目,全部開源

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

        發(fā)布人:xiaomaidashu 時(shí)間:2022-06-22 來源:工程師 發(fā)布文章
        1、介紹

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

        雖然RT_Thread組件中已經(jīng)提供了強(qiáng)大的finsh命令行交互工具,但對于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.占用資源少,使用簡單,靈活方便。使用過程只涉及兩個(gè)shell_init()和shell()兩個(gè)函數(shù),無論是使用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ù)原型,只需要按照命令編寫命令函數(shù),并注冊命令函數(shù),即可使用命令。

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


        原始工程添加nr_micro_shell增加量添加finsh增加量
        ROM63660+3832+26908
        RAM4696+1104+1304

        兩者配置都為

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

        nr_micro_shell演示效果如下

        圖片


        圖片

        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-Thread online packages
            tools packages ---> 
                [*] nr_micro_shell:Lightweight command line interaction tool. --->

        相關(guān)的設(shè)置在按下sapce鍵選中后,按enter可進(jìn)行相關(guān)參數(shù)配置。然后讓 RT-Thread 的包管理器自動(dòng)更新,或者使用 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。命令行空白時(shí)按Tab,可顯示所有支持的命令,測試示例命令可見doc/pic下的使用示例動(dòng)圖。自定義命令過程,參照下文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"
        
        int main(void)
        {
            /* 初始化 */
            shell_init();
        
            while(1)
            {
                if(USART GET A CHAR 'c')
                {
                    /* nr_micro_shell接收字符 */
                    shell(c);
                }
            }
        }

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

        #include "nr_micro_shell.h"
        
        int main(void)
        {
            unsigned int i = 0;
            //匹配好結(jié)束符配置 NR_SHELL_END_OF_LINE 0
            char test_line[] = "test 1 2 3n"
            /* 初始化 */
            shell_init();
            
            /* 初步測試代碼 */
            for(i = 0; i < sizeof(test_line)-1; i++)
            {
                shell(test_line[i]);
            }
        
            /* 正式工作代碼 */
            while(1)
            {
                if(USART GET A CHAR 'c')
                {
                    /* nr_micro_shell接收字符 */
                    shell(c);
                }
            }
        }
        3.3 添加自己的命令

        STEP1:

        您需要在nr_micro_shell_commands.c*中實(shí)現(xiàn)一個(gè)命令函數(shù)。命令函數(shù)的原型如下

        void your_command_funtion(char argc, char *argv)
        {
            .....
        }

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

        test -a 1

        則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: 在使用命令前需要注冊命令,共有兩種方法注冊命令

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

        const static_cmd_st static_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í),可以使用以下方式注冊命令

        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í)行文件
        make debug
        # 清除編譯生成文件
        make clean
        5、注意事項(xiàng)

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

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

        const static_cmd_st static_cmd[] =
        {
           .....
           {"",NULL}
        };

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

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

        原文地址:https://gitee.com/nrush/nr_micro_shell

        *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。

        絕對值編碼器相關(guān)文章:絕對值編碼器原理


        關(guān)鍵詞: 單片機(jī)

        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉