一、描述你遇到的问题
按照教程创建hello world工程,系统配置界面没有 Enable the Sample of demo 可选项
二、你具体做的所有步骤结果截图
创建demo.c、demo.h, CMakeLists.txt 文件,复制教程中代码配置
系统配置界面没有 Enable the Sample of demo 选项
直接编译会出现如下错误,请问怎么解决
三、当前开发板状态全景照片
请插入图片
四、开发板串口所有日志
请在此处粘贴串口日志
按照教程创建hello world工程,系统配置界面没有 Enable the Sample of demo 可选项
创建demo.c、demo.h, CMakeLists.txt 文件,复制教程中代码配置
系统配置界面没有 Enable the Sample of demo 选项
直接编译会出现如下错误,请问怎么解决
请插入图片
请在此处粘贴串口日志
个人开发记录,仅供参考:
1、新增工程文件:application/samples/下新建文件夹“demo”,demo下新建CMakeLists.txt、demo.c、Kconfig三个文件
CMakeLists.txt:
set(SOURCES_LIST
${CMAKE_CURRENT_SOURCE_DIR}/demo.c
)
set(PUBLIC_HEADER_LIST
${CMAKE_CURRENT_SOURCE_DIR}
)
set(SOURCES "${SOURCES_LIST}" PARENT_SCOPE)
set(PUBLIC_HEADER "${PUBLIC_HEADER_LIST}" PARENT_SCOPE)
demo.c:参考链接的Hello World工程
#include "common_def.h"
#include "osal_debug.h"
#include "cmsis_os2.h"
#include "app_init.h"
#include "pinctrl.h"
#include "soc_osal.h"
#include "gpio.h"
#define TASKS_TEST_TASK_STACK_SIZE 0x1000
#define TASKS_TEST_TASK_PRIO (osPriority_t)(17)
static void *tasks_test_task(const char *arg)
{
unused(arg);
uapi_pin_set_mode(CONFIG_DEMO_PIN, PIN_MODE_0);
uapi_gpio_set_dir(CONFIG_DEMO_PIN, GPIO_DIRECTION_OUTPUT);
uapi_gpio_set_val(CONFIG_DEMO_PIN, GPIO_LEVEL_LOW);
while (1) {
uapi_gpio_toggle(CONFIG_DEMO_PIN);
osal_printk("Hello World BearPi\r\n");
osal_msleep(CONFIG_DEMO_DURATION_MS);
}
return NULL;
}
static void tasks_test_entry(void)
{
osThreadAttr_t attr;
attr.name = "TasksTask";
attr.attr_bits = 0U;
attr.cb_mem = NULL;
attr.cb_size = 0U;
attr.stack_mem = NULL;
attr.stack_size = TASKS_TEST_TASK_STACK_SIZE;
attr.priority = TASKS_TEST_TASK_PRIO;
if (osThreadNew((osThreadFunc_t)tasks_test_task, NULL, &attr) == NULL) {
/* Create task fail. */
}
}
/* Run the tasks_test_entry. */
app_run(tasks_test_entry);
Kconfig:
#===============================================================================
# @brief Kconfig file.
# Copyright (c) @CompanyNameMagicTag 2023-2023. All rights reserved.
#===============================================================================
config DEMO_PIN
int
prompt "Choose DEMO_PIN pin."
depends on ENABLE_DEMO_SAMPLE
default 2
config DEMO_DURATION_MS
int
prompt "Duration of demo in MS."
depends on ENABLE_DEMO_SAMPLE
default 500
2、工程配置
application/samples/Kconfig里增加:
config ENABLE_DEMO_SAMPLE
bool
prompt "Enable the Sample of demo."
default n
depends on SAMPLE_ENABLE
help
This option means enable the sample of demo.
if ENABLE_DEMO_SAMPLE
menu "demo Sample Configuration"
osource "application/samples/demo/Kconfig"
endmenu
endif
application/samples/CMakeLists.txt里增加:
if(DEFINED CONFIG_ENABLE_DEMO_SAMPLE)
add_subdirectory_if_exist(demo)
endif()
这个错误原因应该不是程序导致的了,两台电脑各做了一遍,报错不一样
我用家里的电脑做了一遍 ,我文中的程序编译报的错误不一样。把自己创建的CMakeLists.txt里面/demo.h删掉就编译通过了,下载也能打印。看来两次报错不是同一个原因
set(SOURCES_LIST
${CMAKE_CURRENT_SOURCE_DIR}/demo.c
)
set(PUBLIC_HEADER_LIST
${CMAKE_CURRENT_SOURCE_DIR}/demo.h (把/demo.h删掉就可以了)
)
set(SOURCES "${SOURCES_LIST}" PARENT_SCOPE)
set(PUBLIC_HEADER "${PUBLIC_HEADER_LIST}" PARENT_SCOPE)