当前位置: 首页 > news >正文

制作一个网站的费用老铁外链

制作一个网站的费用,老铁外链,学校网站asp源码,做网站前段可以考什么证书文章目录 letter-shell简介letter-shell源码获取letter-shell移植函数和变量应用示例 本文是高云FPGA系列教程的第10篇文章。 shell,中文是外壳的意思,就是操作系统的外壳。通过shell命令可以操作和控制操作系统,比如Linux中的Shell命令就包括…

文章目录

      • letter-shell简介
      • letter-shell源码获取
      • letter-shell移植
      • 函数和变量应用示例

本文是高云FPGA系列教程的第10篇文章。

shell,中文是外壳的意思,就是操作系统的外壳。通过shell命令可以操作和控制操作系统,比如Linux中的Shell命令就包括ls、cd、pwd等等。总结来说,Shell是一个命令解释器,它通过接受用户输入的Shell命令来启动、暂停、停止程序的运行或对计算机进行控制。

嵌入式平台可以基于串口实现shell功能,通过对串口命令的解析,可以执行相应的函数,查询变量的值等等。

本文介绍letter-shell开源shell库在高云GW1NSR-4C ARM处理器上的移植和应用。

letter-shell简介

letter-shell,一个功能强大的嵌入式shell,由标准C语言开发,可以在各种嵌入式平台上使用,可以通过命令行来执行函数,查询变量的值等等,支持裸机运行或RTOS运行,最新的发布版本是v3.1.2,letter-shell有以下功能:

  • 命令自动补全
  • 快捷键功能定义
  • 命令权限管理
  • 用户管理
  • 变量支持
  • 代理函数和参数代理解析

代码完全开源,并遵循MIT开源协议,Github收获近1K Star。

开源地址:

https://github.com/NevermindZZT/letter-shell

作者的主页地址:

https://nevermindzzt.github.io/

目前还保持更新状态,最近的一次提交是2023.07.25。

letter-shell源码获取

打开上文中letter-shell的开源地址,直接下载最新版本的Release代码,

或者,通过Git命令获取目前最新的代码,

$ git clone https://github.com/NevermindZZT/letter-shell.git --depth=1Cloning into 'letter-shell'...
remote: Enumerating objects: 72, done.
remote: Counting objects: 100% (72/72), done.
remote: Compressing objects: 100% (66/66), done.
remote: Total 72 (delta 3), reused 35 (delta 2), pack-reused 0
Receiving objects: 100% (72/72), 783.28 KiB | 344.00 KiB/s, done.
Resolving deltas: 100% (3/3), done.

src目录中就是letter-shell的源文件,demo文件夹下是基于ESP32和STM32的移植示例代码。

letter-shell移植

首先把src文件夹的所有文件复制到GW1NSR-4C Keil工程的用户目录下,并新建两个接口文件:shell_port.cshell_port.h,用来对接shell库。

把这些文件都导入到我们的工程中,并包含头文件路径。

shell_cfg.h文件通过宏定义,可以实现功能的配置,非常灵活。

在shell_port.c文件中实现shell_write函数(串口发送字符串),并进行shell初始化:

#include "shell.h"
#include "drv_uart.h"Shell shell;
char shellBuffer[512];short userShellWrite(char *data, unsigned short len)
{UART_SendString(UART0, data);return len;
}void userShellInit(void)
{shell.write = userShellWrite;shellInit(&shell, shellBuffer, 512);
}

对于裸机移植,不用实现shell read函数,只需要实现write函数。

并在shellport.h文件中进行声明:

#ifndef __SHELL_PORT_H__
#define __SHELL_PORT_H__#include "shell.h"extern Shell shell;void userShellInit(void);#endif

然后在串口接收中断服务函数,每接收到一字节数据调用shellHandler函数。

void UART0_Handler(void)
{char rx = 0;if(UART_GetRxIRQStatus(UART0) == SET){rx = UART_ReceiveChar(UART0);shellHandler(&shell, rx);}UART_ClearRxIRQ(UART0);
}

主程序初始化时调用userShellInit函数,

#include "main.h"int main(void)
{delay_init();uart0_init(115200); //enable rx interruptuserShellInit();while(1){}
}

重新编译生成bin文件,并下载到开发板,打开串口终端,如SercureCRT,可以看到串口输出如下信息,说明移植成功,按下tab键,会提示当前支持的一些命令:

函数和变量应用示例

移植成功之后,我们来演示函数和变量的调用,即通过在终端输入函数名和参数可以直接执行函数,输入变量名可以直接打印变量的实时值。

定义一些变量和函数,并注册到shell命令解析列表中。

#include "main.h"char str[100] = "Hello GoWin GW1NSR-4C (TangNano 4K)";
int cnt = 0;int func(int i, char ch, char *str)
{printf("input int: %d, char: %c, string: %s\r\n", i, ch, str);return 1;
}
//获取系统频率
int get_sysclk(void)
{printf("SystemCoreClock = %d\r\n", SystemCoreClock);printf("APB1 CLK = %d\r\n", PCLK1);printf("APB2 CLK = %d\r\n", PCLK2);printf("AHB CLK  = %d\r\n", HCLK);return 2;
}SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC), get_sysclk, get_sysclk, test);
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC), func, func, test);
SHELL_EXPORT_VAR(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_VAR_INT), cnt, &cnt, test);
SHELL_EXPORT_VAR(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_VAR_STRING), str, str, test);int main(void)
{delay_init();uart0_init(115200); //enable rx interruptprintf("SystemCoreClock = %d\r\n", SystemCoreClock);printf("APB1 CLK = %d\r\n", PCLK1);printf("APB2 CLK = %d\r\n", PCLK2);printf("AHB CLK  = %d\r\n", HCLK);printf("Hello GW1NSR-4C SoC(ARM Cortex-M3)\r\n");printf("letter-shell Example\r\n");userShellInit();while(1){delay_ms(1000);cnt++;}
}

下载,运行。

在终端中直接输入对应的函数名即可直接运行函数,如果函数带参数,还可以在后面输入参数,参数类型支持整形、字符、字符串等多种类型,而且运行结束可以看到函数的返回值,输入变量的名字,可以直接获取到当前实时值,变量类型值整形和字符、字符串多种类型,非常强大、方便。

本文是高云FPGA系列教程的第10篇文章。

http://www.hkea.cn/news/140780/

相关文章:

  • 换物网站为什么做不起来中国免费广告网
  • 可以显示一张图片的网站怎么搭建搜索引擎优化策略
  • 精品课程网站建设论文今天的新闻最新消息
  • 检查网站收录问题蚌埠seo外包
  • 建站展示网站优化网
  • 秦皇岛网站建设价格深圳seo公司
  • 广告型网站建设广州营销网站建设靠谱
  • 包头学做网站平台开发
  • 个人如何做微商城网站指数分布的分布函数
  • 北京网站设计哪家公司好建站工具
  • 深圳外贸网络推广seo诊断书案例
  • Java做网站的基本框架优化关键词规则
  • 网上手机商城网站建设直通车推广计划方案
  • 网站框架是谁做做个电商平台要多少钱
  • 网站开发建设书籍推荐b2b外贸平台
  • 网站首页的布局设计进行优化
  • 无锡做家纺公司网站如何建网站不花钱
  • bootstrap制作的网站页面优化网站seo
  • 海口网站建设优化班级优化大师官网登录
  • 连接品硕网线做怎么弹网站百度地图推广电话
  • 网站做cdn怎么弄百度推广怎么推广
  • 光谷做网站推广竞价服务托管公司
  • 网上商城网站建设方案书公众号seo排名
  • wordpress内网访问泰州百度关键词优化
  • 做淘客网站用备案网络营销计划书怎么写
  • 网站 公安 备案深圳百度推广客服电话多少
  • 北京米兰广告设计有限公司广州优化疫情防控举措
  • 汕头个人建站模板网站推广计划方法
  • php企业网站无限制源码网络营销方案设计
  • 动漫网站开发与建设百度网盘网页版入口官网