星闪——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;
posted @ 2025-06-05 10:34  邦九o  阅读(72)  评论(0)    收藏  举报