什么是嵌入式命令行交互工具

最近看了几篇嵌入式命令行交互工具的推文,全文介绍和开源托管平台基本一致,感觉就像是在水文章;今天摸鱼的时候移植用了一下,为后续项目开发搭建一个交互,方便后续参数调试和硬件调试,开源链接如下:
https://gitee.com/nrush/nr_micro_shell| 移植准备
1、去托管平台把源码下下来;
2、准备一个基础工程,实现串口重定义输出:
| 移植源码
1、把核心源码复制到工程中:
2、把命令示例源码复制到工程中:
3、把源码添加到工程中:
4、屏蔽rt-thread 的头文件:
5、修改输出的末尾行模式:
6、初始化nr_micro_shell:
#include gd32f10x.h#include stdio.h#include nr_micro_shell.h// uart配置void hal_log_init(void){ /* 使gpio时钟 */ rcu_periph_clock_enable(rcu_gpioa); /* 使usart时钟 */ rcu_periph_clock_enable(rcu_usart0); /* 连接端口到usartx_tx */ gpio_init(gpioa, gpio_mode_af_pp, gpio_ospeed_50mhz, gpio_pin_9); /* 连接端口到usartx_rx */ gpio_init(gpioa, gpio_mode_in_floating, gpio_ospeed_50mhz, gpio_pin_10); /* usart配置 */ usart_deinit(usart0); /*!< 复位外设usart */ usart_word_length_set(usart0, usart_wl_8bit); /*!< 配置usart字长 */ usart_stop_bit_set(usart0, usart_stb_1bit); /*!< 配置usart停止位 */ usart_parity_config(usart0, usart_pm_none); /*!< 配置usart奇偶校验 */ usart_baudrate_set(usart0, 115200u); /*!< 配置usart波特率 */ usart_receive_config(usart0, usart_receive_enable); /*!< usart/uart接收器配置 */ usart_transmit_config(usart0, usart_transmit_enable); /*!< usart/uart发送器配置 */ usart_enable(usart0); /*!< 使能usart */ /*中断管理器使能,并分配优先级*/ nvic_irq_enable(usart0_irqn, 1, 0); /*清除中断标志*/ usart_interrupt_flag_clear(usart0, usart_int_flag_rbne); usart_interrupt_flag_clear(usart0, usart_int_flag_idle); /* 使能串口中断 */ usart_interrupt_enable(usart0, usart_int_rbne); /*!< 接收不为空中断 */}// usart0中断void usart0_irqhandler(void){ if(reset != usart_interrupt_flag_get(usart0, usart_int_flag_rbne)) { /* 清除标志位 */ usart_interrupt_flag_clear(usart0, usart_int_flag_rbne); /* 接收数据(注意) */ shell(usart_data_receive(usart0)); }}//printf重定向函数int fputc(int ch,file *f){ usart_data_transmit(usart0, (uint8_t)ch); //发送一字节数据 while(reset == usart_flag_get(usart0, usart_flag_tbe)); //等待发送完成 return ch;}// 外设初始化void hal_device_init(void){ hal_log_init(); /* 初始化 */ shell_init();}// 主循环int main(void){ // 设置优先级组 nvic_priority_group_set(nvic_prigroup_pre4_sub0); // 外设初始化 hal_device_init(); while (1) { }}7、查看效果:
| 定义指令
1、添加自定义指令代码:
2、查看效果:
| 最终效果
移植成功后就可以在mcu中体验linux的shell命令那种感觉,注意一定要修改输出的末尾行模式,不然会不能正常使用,来感受一下最终效果:
最终的效果还是不错的,和linux的体验类似,感兴趣的同学可以移植来体验一下mcu级别的shell命令交互;
--end--
阅读 225

探讨PCB、FPC十种细分领域发展趋势
霍尔电流传感器AH91X(ACS712)应用于多功能插电板电路
11月18日就到期了,美国商务部对华为临时许可或延长
IDC与您携手奏响数字化优先的和谐乐章
宝马8系究竟是6系的继承者还是傀儡?
什么是嵌入式命令行交互工具
联想手机销量大跌31% 杨元庆:下半年表现料改善
AS5950集成式X射线探测器芯片进一步降低CT扫描仪的成本
比特币突破3.7万美元再创新高
什么是骨传导耳机?骨传导耳机有必要买吗
Micro LED激光巨量转移技术剖析
VIA威盛旗下的C3系列处理器被曝只需一个简单命令即可进入“上帝模式”
电动汽车相比燃油车有什么优点
瑞士一公司研发出一种高密度锂电池 续航可达1000公里
人工智能的快速发展 为森林消防带来了一种全新的解决方案
三相交流电输入变频器的电压、电流波形是什么?
名家汇宣布出资510万元设立控股子公司发展健康教育照明领域
Google相册将不再备份WhatsApp和Facebook图片
《糖豆》快应用上线华为应用市场,构建便捷的线上运动健康社区
创维2998WF-9000/5P03水平亮带