添加新的模块
添加代码文件
// 定义ULOG的标签和基本,必须位于c/c++文件最顶部,且不能定义在.h文件
#define LOG_TAG "hello_world"
#define LOG_LVL LOG_LVL_DBG
// nextpilot.h包含项目中可能用到的所有头文件
#include "nextpilot.h"
// 当前程序是否运行
static bool _is_app_running = false;
static uint32_t _app_run_count = 0;
// hello_world线程入口函数
void hello_world_entry(void *param){
while (_is_app_running){
// do some thing
_app_run_count++;
// 延时10ms
rt_thread_mdelay(10);
}
_is_app_running = false;
}
// hello_world启动程序
// 默认通过INIT_APP_EXPORT导出到初始化列表
// 也可以通过命令行hell_world start启动
int hello_world_start(){
if (_is_app_running){
LOG_W("hello world is running");
return -RT_ERROR;
}
LOG_I("this is hello world\n");
_is_app_running = true;
return RT_EOK;
}
// INIT_APP_EXPORT宏将hello_world_start添加到初始化列表中
// 在系统启动之后会自动调用该函数,无须手动添加到main()中
INIT_APP_EXPORT(hello_world_start);
// hello_world停止程序
// 通过命令行hello_world stop触发
int hello_world_stop(){
if (!_is_app_running) {
LOG_W("hello world not running");
return -RT_ERROR;
}
_is_app_running = false;
return RT_EOK;
}
int hello_world_main(int argc, char** argv){
}
// 添加命令行,可以通过终端交互操作hell_world
MSH_CMD_EXPORT_ALIAS(hello_world_main, hello, hello world demo);
添加 Kconfig 文件
menuconfig APP_USING_HELLO_WORLD
bool "hello world demo"
default n
if APP_USING_HELLO_WORLD
#
endif
添加 Sconscript 文件
import os
import sys
from building import *
# 当前Sconscript文件目录
cwd = GetCurrentDir()
# 需要加入编译的文件
src = Glob("*.c")
# 需要加入include的目录
inc = [cwd]
# 依赖APP_USING_HELLO_WORLD
# 如果rtconfig.h中没有定义APP_USING_HELLO_WORLD则不会编译
objs = DefineGroup(src, inc, depend=['APP_USING_HELLO_WORLD'], )