星闪——Hello Word!
本文是对华为星闪技术的学习开端,将介绍基于BearPi-Pico H3863开发板的Hello Word!工程。
static void *tasks_test_task(const char *arg)
{
unused(arg);
while (1) {
osal_printk("Hello World BearPi\r\n"); // 终端打印函数
//osDelay(TASKS_TEST_DURATION_MS); // 延时函数
osal_msleep(1000); //上方的延时有问题,改用 soc_osal.h 库中的osal_msleep()函数
}
return NULL;
}
关键字static可以函数仅在当前文件(编译单元)内可见,其他文件无法通过 extern 声明调用该函数,在嵌入式/RTOS 开发中,常用于隐藏内部实现,避免命名冲突。
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. */
}
}
// 定义系统初始化和启动的入口。
app_run(tasks_test_entry);
该函数的功能是创建线程任务,涵盖了对线程任务的初始化配置,osThreadAttr_t结构体用于定义线程属性,其属性含义如下:
typedef struct {
const char *name; ///< name of the thread 线程的名称
uint32_t attr_bits; ///< attribute bits 线程的属性标志位
void *cb_mem; ///< memory for control block 指向线程控制块(TCB)内存的指针。如果为 NULL,RTOS 会动态分配内存
uint32_t cb_size; ///< size of provided memory for control block 提供的线程控制块内存大小(字节)
void *stack_mem; ///< memory for stack 指向线程栈内存的指针
uint32_t stack_size; ///< size of stack 线程栈的大小(字节)
osPriority_t priority; ///< initial thread priority (default: osPriorityNormal) 线程的初始优先级
TZ_ModuleId_t tz_module; ///< TrustZone module identifier TrustZone 模块标识符(可不加)
uint32_t reserved; ///< reserved (must be 0) 保留字段,必须设置为 0(可不加)
} osThreadAttr_t;

浙公网安备 33010602011771号