# nr_micro_shell怎么在單片機上體驗Linux shell命令行
## 引言
在嵌入式開發中,資源受限的單片機通常缺乏交互式命令行環境。nr_micro_shell作為一款輕量級開源工具(GitHub: **NevermindZZT/nr_micro_shell**),為STM32等單片機實現了類Linux的shell交互體驗。本文將介紹其移植與使用方法。
---
## 一、nr_micro_shell簡介
### 核心特性
- **輕量級**:代碼僅2-3KB RAM占用,適合Cortex-M系列MCU
- **類Linux操作**:支持`ls`、`cd`、`echo`等基礎命令
- **可擴展性**:用戶可自定義命令和參數解析
- **多平臺適配**:已支持UART、USB-CDC等通信方式
---
## 二、硬件準備
### 所需環境
1. 開發板:STM32F103C8T6(或其他Cortex-M內核MCU)
2. 通信接口:USB轉TTL模塊(用于UART連接)
3. 開發環境:Keil MDK/STM32CubeIDE + Serial終端工具(如PuTTY)
---
## 三、移植步驟
### 1. 獲取源碼
```bash
git clone https://github.com/NevermindZZT/nr_micro_shell.git
nr_micro_shell
目錄加入工程
#include "nr_micro_shell.h"
修改串口發送函數(示例為HAL庫):
void shell_uart_write(char *data, uint16_t len) {
HAL_UART_Transmit(&huart1, (uint8_t*)data, len, 100);
}
在main()中初始化:
nr_shell_init(shell_uart_write); // 注冊輸出函數
命令 | 功能描述 |
---|---|
help |
顯示所有可用命令 |
clear |
清屏 |
echo |
回顯輸入參數 |
int my_cmd(int argc, char *argv[]) {
if (argc > 1) {
printf("Hello %s!\n", argv[1]);
}
return 0;
}
NR_SHELL_CMD_EXPORT(my_cmd, "Demo command");
結合LittleFS/SPIFFS:
int ls_cmd(int argc, char *argv[]) {
// 實現目錄列表功能
return 0;
}
啟用配置宏:
#define NR_SHELL_HISTORY 1 // 在nr_shell_cfg.h中啟用
NR_SHELL_MAX_LINE_LENGTH
(默認128字節)通過nr_micro_shell,開發者可以在資源有限的單片機上獲得接近Linux shell的交互體驗。其模塊化設計使得二次開發非常便捷,是嵌入式調試和教學的理想工具。建議結合RTOS(如FreeRTOS)實現多任務環境下的穩定運行。
注:實際字數約620字,可根據需要增減示例代碼部分擴展內容。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。