代码拉取完成,页面将自动刷新
xcmd是一款单片机命令行工具,移植十分方便,并且对flash与ram占用很小,旨在为单片机提供一个能够快速搭建且占用资源很小的命令行工具,可以大大加快单片机程序调试工作,它有一下几个优点。
xcmd_cmd_register()/xcmd_key_register
方法注册命令或按键XCMD_EXPORT_CMD()/XCMD_EXPORT_KEY()
方法直接导出命令或按键,不需要额外运行注册函数/* 例如移植到Arduino平台 */
int cmd_get_char(uint8_t *ch)
{
if(Serial.available())
{
*ch = Serial.read();
return 1;
}
else
{
return 0;
}
}
int cmd_put_char(uint8_t ch)
{
Serial.write(ch);
return 1;
}
void setup() {
Serial.begin(115200);
xcmd_init(cmd_get_char, cmd_put_char);
}
void loop() {
xcmd_task();
}
配置xcmd_config.h
注意: 如果不知道如何修改连接脚本,建议不要使能ENABLE_XCMD_EXPORT。不使能ENABLE_XCMD_EXPORT的情况下有更好的兼容性移植更加简单
#define XCMD_LINE_MAX_LENGTH (128) /* 命令行支持的最大字符数 */
#define XCMD_HISTORY_MAX_NUM (16) /* 支持的历史记录个数, 这个参数对内存的影响很大,建议arduino设置为0,0为不支持 */
#define XCMD_PARAM_MAX_NUM (8) /* 支持输入的参数个数 */
// #define XCMD_DEFAULT_PROMPT "->" /* 提示符 */
// #define XCMD_DEFAULT_PROMPT_CLOLR TX_GREEN /* 提示符颜色 */
// #define ENABLE_XCMD_EXPORT /* 需要修改lds,启用后支持XCMD_EXPORT_CMD和XCMD_EXPORT_KEY方法导出命令 */
static int cmd_echo(int argc, char* argv[])
{
if(param_check(1, argc, argv))
{
printf("%s\r\n", argv[1]);
}
return 0;
}
static xcmd_t cmds[] =
{
{"echo", cmd_echo, "print anything", NULL},
};
void test_cmd_init(void)
{
xcmd_cmd_register(cmds, sizeof(cmds)/sizeof(xcmd_t));
}
int cmd_ctr_a(void* pv)
{
printf("this is ctr+a\n");
}
static xcmd_key_t user_keys[] =
{
{KEY_CTR_A, cmd_ctr_a, "ctr+a", NULL},
};
void test_keys_init(void)
{
xcmd_key_register(user_keys, sizeof(user_keys)/sizeof(xcmd_key_t));
}
example/stm32/qemu/demos/main.ld
static int cmd_echo(int argc, char* argv[])
{
if(param_check(1, argc, argv))
{
printf("%s\r\n", argv[1]);
}
return 0;
}
XCMD_EXPORT_CMD(echo, cmd_echo, "print anything")
example/stm32/qemu/demos/main.ld
int cmd_ctr_a(void* pv)
{
printf("this is ctr+a\n");
}
XCMD_EXPORT_KEY(KEY_CTR_A, cmd_ctr_a, "ctr+a")
流程图需要使用drawio来打开,可以使用vscode drawio的插件来打开
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型