色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于STM32F103RCT6移植LiteOS-M-V5.0.2-Release

tianbeibei ? 2025-02-26 16:26 ? 次閱讀

STM32F103RCT6移植LiteOS-M-V5.0.2-Release

下載源碼

kernel_liteos_m: OpenHarmony-v5.0.2-Release

third_party_bounds_checking_function: OpenHarmony-v5.0.2-Release

third_party_cmsis: OpenHarmony-v5.0.2-Release

進(jìn)入gitee界面后點(diǎn)擊克隆/下載按鈕,下載ZIP壓縮包后解壓縮。下載路徑自定義。

使用STM32CubeMX創(chuàng)建工程模板

配置晶振和燒寫口

NVIC配置(默認(rèn)配置,未修改)

晶振配置

系統(tǒng)配置

時(shí)鐘配置

工程配置

生成路徑根據(jù)實(shí)際情況配置

代碼生成配置

生成代碼

image-20250225111320517

配置使用Jlink+SWD方式下載程序

  1. 配置Jlink

image-20250225112003472

  1. 配置SWD模式image-20250225112051929

  2. 配置燒寫成功后復(fù)位運(yùn)行

    image-20250225112216209

編譯成功

image-20250225112332868

模板添加目錄

原有目錄結(jié)構(gòu)

image-20250225112612973

增加目錄

  1. APP- 應(yīng)用代碼
  2. Config- 配置文件
  3. Lib- 庫文件
  4. Middleware- 中間件

現(xiàn)有目錄

image-20250225113306660

添加日志庫-simplelogger

simplelogger: 一款簡易的日庫庫,主要對(duì)接 J-Link RTT 使用 - Gitee.com

下載源文件

  1. 進(jìn)入Middleware文件夾
  2. 使用Git Base Here進(jìn)入Git控制臺(tái)
  3. 執(zhí)行命令git clone https://gitee.com/Newcapec_cn/simplelogger.git

image-20250225113528944

添加源文件

  1. 添加Middleware\simplelogger\src\*.c
  2. 添加Middleware\simplelogger\port\*.c
  3. 添加Middleware\simplelogger\rtt\*.c

image-20250225115603597

配置頭文件路徑

  1. 增加頭文件路徑..\Middleware\simplelogger\inc

image-20250225115839811

增加測試代碼

  1. APP文件夾創(chuàng)建APP_main.c文件,文件內(nèi)容為
#include "slog.h"

void app_main(void) {
    slog_test();

    while (1) {
        ;
    }
}

  1. 添加APP_main.c文件到工程

image-20250225120808761

  1. 在模板main函數(shù)的while循環(huán)中添加app_main函數(shù)
void app_main(void);
app_main();

完整main函數(shù)如下

	
/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    void app_main(void);
    app_main();
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

編譯運(yùn)行測試

測試成功界面

image-20250225134706999

移植LiteOS-M

移植源碼

  1. kernel_liteos_m-OpenHarmony-v5.0.2-Releasearchkalkernelutils文件夾拷貝至項(xiàng)目Middleware\liteos-m文件夾

  2. 刪除文件夾

    Middleware\liteos-m\arch\arm\arm9

    Middleware\liteos-m\arch\arm\arm4

    Middleware\liteos-m\arch\arm\arm7

    Middleware\liteos-m\arch\arm\arm33

    Middleware\liteos-m\arch\arm\arm55

    Middleware\liteos-m\arch\csky

    Middleware\liteos-m\arch\risc-v

    Middleware\liteos-m\arch\xtensa

    Middleware\liteos-m\kal\libc

    Middleware\liteos-m\kal\libsec

    Middleware\liteos-m\kal\posix

  3. Middleware\liteos-m路徑下創(chuàng)建文件夾bounds_checking

  4. third_party_bounds_checking_function-OpenHarmony-v5.0.2-Releaseincludesrc文件夾拷貝至項(xiàng)目Middleware\liteos-m\bounds_checking文件夾中

  5. 刪除非源碼文件(可不操作)

文件結(jié)構(gòu)為:

liteos-m
├── arch
│ ├── arm
│ │ ├── common
│ │ │ ├── los_common_interrupt.c
│ │ │ └── los_common_interrupt.h
│ │ ├── cortex-m3
│ │ │ └── keil
│ │ │     ├── los_arch_atomic.h
│ │ │     ├── los_arch_context.h
│ │ │     ├── los_arch_interrupt.h
│ │ │     ├── los_arch_timer.h
│ │ │     ├── los_atomic.S
│ │ │     ├── los_context.c
│ │ │     ├── los_dispatch.S
│ │ │     ├── los_exc.S
│ │ │     ├── los_interrupt.c
│ │ │     ├── los_startup.s
│ │ │     └── los_timer.c
│ │ └── include
│ │     └── arch_elf.h
│ └── include
│     ├── los_arch.h
│     ├── los_atomic.h
│     ├── los_context.h
│     ├── los_interrupt.h
│     ├── los_mpu.h
│     └── los_timer.h
├── bounds_checking
│ ├── include
│ │ ├── securec.h
│ │ └── securectype.h
│ └── src
│     ├── fscanf_s.c
│     ├── fwscanf_s.c
│     ├── gets_s.c
│     ├── input.inl
│     ├── memcpy_s.c
│     ├── memmove_s.c
│     ├── memset_s.c
│     ├── output.inl
│     ├── scanf_s.c
│     ├── secinput.h
│     ├── securecutil.c
│     ├── securecutil.h
│     ├── secureinput_a.c
│     ├── secureinput_w.c
│     ├── secureprintoutput_a.c
│     ├── secureprintoutput.h
│     ├── secureprintoutput_w.c
│     ├── snprintf_s.c
│     ├── sprintf_s.c
│     ├── sscanf_s.c
│     ├── strcat_s.c
│     ├── strcpy_s.c
│     ├── strncat_s.c
│     ├── strncpy_s.c
│     ├── strtok_s.c
│     ├── swprintf_s.c
│     ├── swscanf_s.c
│     ├── vfscanf_s.c
│     ├── vfwscanf_s.c
│     ├── vscanf_s.c
│     ├── vsnprintf_s.c
│     ├── vsprintf_s.c
│     ├── vsscanf_s.c
│     ├── vswprintf_s.c
│     ├── vswscanf_s.c
│     ├── vwscanf_s.c
│     ├── wcscat_s.c
│     ├── wcscpy_s.c
│     ├── wcsncat_s.c
│     ├── wcsncpy_s.c
│     ├── wcstok_s.c
│     ├── wmemcpy_s.c
│     ├── wmemmove_s.c
│     └── wscanf_s.c
├── kal
│ └── cmsis
│     ├── cmsis_liteos2.c
│     ├── cmsis_os2.h
│     ├── cmsis_os.h
│     ├── hos_cmsis_adp.h
│     └── kal.h
├── kernel
│ ├── include
│ │ ├── los_config.h
│ │ ├── los_event.h
│ │ ├── los_membox.h
│ │ ├── los_memory.h
│ │ ├── los_mux.h
│ │ ├── los_queue.h
│ │ ├── los_sched.h
│ │ ├── los_sem.h
│ │ ├── los_sortlink.h
│ │ ├── los_swtmr.h
│ │ ├── los_task.h
│ │ └── los_tick.h
│ └── src
│     ├── los_event.c
│     ├── los_init.c
│     ├── los_mux.c
│     ├── los_queue.c
│     ├── los_sched.c
│     ├── los_sem.c
│     ├── los_sortlink.c
│     ├── los_swtmr.c
│     ├── los_task.c
│     ├── los_tick.c
│     └── mm
│         ├── los_membox.c
│         └── los_memory.c
└── utils
    ├── internal
    │ ├── los_hook_types.h
    │ └── los_hook_types_parse.h
    ├── los_compiler.h
    ├── los_debug.c
    ├── los_debug.h
    ├── los_error.c
    ├── los_error.h
    ├── los_hook.c
    ├── los_hook.h
    ├── los_list.h
    └── los_reg.h

19 directories, 106 files

項(xiàng)目添加源文件

image-20250225164219708

image-20250225164227728

image-20250225164237060

image-20250225164245180

添加頭文件路徑

..\Middleware\simplelogger\inc
..\Middleware\liteos-m\arch\include
..\Middleware\liteos-m\arch\arm\include
..\Middleware\liteos-m\arch\arm\cortex-m3\keil
..\Middleware\liteos-m\arch\arm\common
..\Middleware\liteos-m\kernel\include
..\Middleware\liteos-m\utils
..\Middleware\liteos-m\bounds_checking\include

image-20250225164411780

編譯器選擇

Use default compiler version 6

Use MicroLlB

C語言使用C11規(guī)則

C語言優(yōu)化等級(jí)-0

解決target_config.h未找到問題

  1. Config文件夾下創(chuàng)建空文件ARMCM3.htarget_config.h

  2. target_config.h添加以下內(nèi)容

    /*
     * Copyright (c) 2013-2019 Huawei Technologies Co., Ltd. All rights reserved.
     * Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved.
     *
     * Redistribution and use in source and binary forms, with or without modification,
     * are permitted provided that the following conditions are met:
     *
     * 1. Redistributions of source code must retain the above copyright notice, this list of
     *    conditions and the following disclaimer.
     *
     * 2. Redistributions in binary form must reproduce the above copyright notice, this list
     *    of conditions and the following disclaimer in the documentation and/or other materials
     *    provided with the distribution.
     *
     * 3. Neither the name of the copyright holder nor the names of its contributors may be used
     *    to endorse or promote products derived from this software without specific prior written
     *    permission.
     *
     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
     * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
     * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
     * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
     * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
     * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     */
    
    /**@defgroup los_config System configuration items
     * @ingroup kernel
     */
    
    #ifndef _TARGET_CONFIG_H
    #define _TARGET_CONFIG_H
    
    #include "ARMCM3.h"
    #include "stm32f1xx_hal.h"
    #include "los_common_interrupt.h"
    
    #ifdef __cplusplus
    #if __cplusplus
    extern "C" {
    #endif /* __cplusplus */
    #endif /* __cplusplus */
    
    /*=============================================================================
                                            System clock module configuration
    =============================================================================*/
    #define OS_SYS_CLOCK                            SystemCoreClock
    #define LOSCFG_BASE_CORE_TICK_PER_SECOND        (1000UL)
    #define LOSCFG_BASE_CORE_TICK_WTIMER            0
    #define LOSCFG_BASE_CORE_TICK_RESPONSE_MAX      (0xFFFFFFFFUL)
    /*=============================================================================
                                            Hardware interrupt module configuration
    =============================================================================*/
    #define LOSCFG_PLATFORM_HWI                     0
    #define LOSCFG_USE_SYSTEM_DEFINED_INTERRUPT     0
    #define LOSCFG_PLATFORM_HWI_LIMIT               128
    /*=============================================================================
                                           Task module configuration
    =============================================================================*/
    #define LOSCFG_BASE_CORE_TSK_LIMIT              24
    #define LOSCFG_BASE_CORE_TSK_IDLE_STACK_SIZE    (0x500U)
    #define LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE (0x2D0U)
    #define LOSCFG_BASE_CORE_TSK_MIN_STACK_SIZE     (0x130U)
    #define LOSCFG_BASE_CORE_TIMESLICE              1
    #define LOSCFG_BASE_CORE_TIMESLICE_TIMEOUT      20000
    /*=============================================================================
                                           Semaphore module configuration
    =============================================================================*/
    #define LOSCFG_BASE_IPC_SEM                     1
    #define LOSCFG_BASE_IPC_SEM_LIMIT               48
    /*=============================================================================
                                           Mutex module configuration
    =============================================================================*/
    #define LOSCFG_BASE_IPC_MUX                     1
    #define LOSCFG_BASE_IPC_MUX_LIMIT               24
    /*=============================================================================
                                           Queue module configuration
    =============================================================================*/
    #define LOSCFG_BASE_IPC_QUEUE                   1
    #define LOSCFG_BASE_IPC_QUEUE_LIMIT             24
    /*=============================================================================
                                           Software timer module configuration
    =============================================================================*/
    #define LOSCFG_BASE_CORE_SWTMR                  1
    #define LOSCFG_BASE_CORE_SWTMR_ALIGN            1
    #define LOSCFG_BASE_CORE_SWTMR_LIMIT            48
    /*=============================================================================
                                           Memory module configuration
    =============================================================================*/
    #define LOSCFG_SYS_EXTERNAL_HEAP                0
    #define LOSCFG_SYS_HEAP_SIZE                    0x00008000
    #define LOSCFG_MEM_MUL_POOL                     1
    #define OS_SYS_MEM_NUM                          20
    /*=============================================================================
                                           Exception module configuration
    =============================================================================*/
    #define LOSCFG_PLATFORM_EXC                     0
    /* =============================================================================
                                           PM module configuration
    ============================================================================= */
    #define LOSCFG_KERNEL_PM                        0
    /* =============================================================================
                                           printf module configuration
    ============================================================================= */
    #define LOSCFG_KERNEL_PRINTF                    2
    
    #ifdef __cplusplus
    #if __cplusplus
    }
    #endif /* __cplusplus */
    #endif /* __cplusplus */
    
    #endif /* _TARGET_CONFIG_H */
    
    
  3. 添加Config文件夾為頭文件路徑

    image-20250225164349678

解決HWI_PROC_FUNC未定義問題

Middleware\liteos-m\arch\arm\common\los_common_interrupt.h中添加以下代碼

/* ---> liteos-m add */
#if (LOSCFG_PLATFORM_HWI_WITH_ARG == 1)
typedef VOID (*HWI_PROC_FUNC)(VOID *parm);
#else
typedef VOID (*HWI_PROC_FUNC)(void);
#endif
/* ---/ */

image-20250225143651754

強(qiáng)制內(nèi)存池4字節(jié)對(duì)齊

Middleware\liteos-m\kernel\src\mm\los_memory.c53行 由STATIC UINT8 g_memStart[LOSCFG_SYS_HEAP_SIZE];修改為STATIC UINT8 __attribute__((aligned(4))) g_memStart[LOSCFG_SYS_HEAP_SIZE];增加__attribute__((aligned(4)))預(yù)處理

修改SysTick_Config參數(shù)

Middleware\liteos-m\arch\arm\cortex-m3\keil\los_timer.c文件中調(diào)用SysTick_Config接口的參數(shù) 由LOSCFG_BASE_CORE_TICK_RESPONSE_MAX修改為OS_SYS_CLOCK / LOSCFG_BASE_CORE_TICK_PER_SECOND

移植PendSV_Handler

PendSV_Handler函數(shù)中調(diào)用HalPendSV接口

void PendSV_Handler(void)
{
  /* USER CODE BEGIN PendSV_IRQn 0 */
  void HalPendSV(void);
  HalPendSV();
  /* USER CODE END PendSV_IRQn 0 */
  /* USER CODE BEGIN PendSV_IRQn 1 */

  /* USER CODE END PendSV_IRQn 1 */
}

移植OsTickHandler

SysTick_Handler函數(shù)中調(diào)用OsTickHandler接口

/**
  * @brief This function handles System tick timer.
  */
void SysTick_Handler(void)
{
  /* USER CODE BEGIN SysTick_IRQn 0 */
  void OsTickHandler(void);
  OsTickHandler();
  /* USER CODE END SysTick_IRQn 0 */

  /* USER CODE BEGIN SysTick_IRQn 1 */

  /* USER CODE END SysTick_IRQn 1 */
}

增加內(nèi)核打印接口

  1. HalConsoleOutput增加調(diào)用Jlink-RTT打印功能

    WEAK VOID HalConsoleOutput(LogModuleType type, INT32 level, const CHAR *fmt, ...)
    {
        /* ---> liteos-m add */
        #include "../rtt/SEGGER_RTT.h"
        va_list ParamList;
        
        va_start(ParamList, fmt);
        SEGGER_RTT_vprintf(0, fmt, &ParamList);
        va_end(ParamList);
        /* ---/ */
    }
    

測試LiteOS-M

  1. APP_main.c添加測試代碼,其完整文件為:

    #include "slog.h"
    #include "los_task.h"
    
    VOID taskSampleEntry2(VOID) {
        while (1) {
            LOS_TaskDelay(1000);
            log_v("taskSampleEntry2 running...");
        }
    }
    
    VOID taskSampleEntry1(VOID) {
        while (1) {
            LOS_TaskDelay(2000);
            log_v("taskSampleEntry1 running...");
        }
    }
    
    UINT32 taskSample(VOID) {
        UINT32           uwRet;
        UINT32           taskID1, taskID2;
        TSK_INIT_PARAM_S stTask1 = {0};
        stTask1.pfnTaskEntry     = (TSK_ENTRY_FUNC)taskSampleEntry1;
        stTask1.uwStackSize      = 0X1000;
        stTask1.pcName           = "taskSampleEntry1";
        stTask1.usTaskPrio       = 6;
        uwRet                    = LOS_TaskCreate(&taskID1, &stTask1);
        if (uwRet != LOS_OK) {
            log_v("create task1 failed\n");
        }
    
        stTask1.pfnTaskEntry = (TSK_ENTRY_FUNC)taskSampleEntry2;
        stTask1.uwStackSize  = 0X1000;
        stTask1.pcName       = "taskSampleEntry2";
        stTask1.usTaskPrio   = 7;
        uwRet                = LOS_TaskCreate(&taskID2, &stTask1);
        if (uwRet != LOS_OK) {
            log_v("create task2 failed\n");
        }
        return LOS_OK;
    }
    
    void app_main(void) {
        unsigned int ret;
        
        slog_test();
        ret = LOS_KernelInit();
        if (ret == LOS_OK) {
            taskSample();
            LOS_Start();
        }
    
        while (1) {
            ;
        }
    }
    
    
  2. 測試成功界面為

image-20250225164639019

適配 CMSIS

添加源碼

Middleware\liteos-m\kal\cmsis\cmsis_liteos2.c

修改源碼

third_party_cmsis-OpenHarmony-v5.0.2-Release\CMSIS\RTOS2\Include\cmsis_os2.h覆蓋Middleware\liteos-m\kal\cmsis\cmsis_os2.h

添加頭文件路徑

..\Middleware\liteos-m\kal\cmsis

image-20250225174721583

創(chuàng)建使用cmsis_os2接口的源碼

  1. APP文件夾中創(chuàng)建源文件cmsis_os2_creat_thread.c,代碼如下:

    /**
     * @file cmsis_os2_creat_thread.c
     * @author TianBeiBei (tianbeibei5628@dingtalk.com)
     * @brief
     * @version 0.1
     * @date 2025-02-25
     *
     * @copyright Copyright (c) 2025
     *
     */
    #include "slog.h"
    #include "cmsis_os2.h"
    
    #define MINI_TASK_DELAY_MS (1 * 1000)
    
    /* Definitions for BelowNormalTask */
    osThreadId_t         BelowNormalTaskHandle;
    const osThreadAttr_t BelowNormalTask_attributes = {
        .name       = "BelowNormalTask",
        .stack_size = 1024 * 4,
        .priority   = (osPriority_t)osPriorityBelowNormal,
    };
    /* Definitions for NormalTask */
    osThreadId_t         NormalTaskHandle;
    const osThreadAttr_t NormalTask_attributes = {
        .name       = "NormalTask",
        .stack_size = 1024 * 4,
        .priority   = (osPriority_t)osPriorityNormal,
    };
    /* Definitions for LowTask */
    osThreadId_t         LowTaskHandle;
    const osThreadAttr_t LowTask_attributes = {
        .name       = "LowTask",
        .stack_size = 1024 * 4,
        .priority   = (osPriority_t)osPriorityLow,
    };
    
    void low_task(void *argument) {
        for (;;) {
            log_v("low_task runing");
            osDelay(MINI_TASK_DELAY_MS * 3);
        }
    #if 0
        osThreadExit();/* 任務(wù)退出 */
    #endif
    }
    
    void normal_task(void *argument) {
        for (;;) {
            log_v("normal_task runing");
            osDelay(MINI_TASK_DELAY_MS * 2);
        }
    #if 0
        osThreadExit();/* 任務(wù)退出 */
    #endif
    }
    
    void below_normal_task(void *argument) {
        for (;;) {
            log_v("below_normal_task runing");
            osDelay(MINI_TASK_DELAY_MS * 1);
        }
    #if 0
        osThreadExit();/* 任務(wù)退出 */
    #endif
    }
    
    void liteos_m_thread_init(void) {
        /* Create the thread(s) */
        /* creation of NormalTask */
        NormalTaskHandle = osThreadNew(normal_task, NULL, &NormalTask_attributes);
        /* creation of BelowNormalTask */
        BelowNormalTaskHandle = osThreadNew(below_normal_task, NULL, &BelowNormalTask_attributes);
        /* creation of LowTask */
        LowTaskHandle = osThreadNew(low_task, NULL, &LowTask_attributes);
    }
    
    void cmsis_os2_main(void) {
        /* Init scheduler */
        osKernelInitialize();
    
        /* Call init function for freertos objects (in freertos.c) */
        liteos_m_thread_init();
    
        /* Start scheduler */
        osKernelStart();
    }
    
    
  2. cmsis_os2_creat_thread.c文件添加到工程中

image-20250225175348631

  1. 修改APP_main.c源碼,添加調(diào)用cmsis_os2接口的代碼,不再調(diào)用源碼接口,修改后的源碼如下:
    #include "slog.h"
    #include "los_task.h"
    
    VOID taskSampleEntry2(VOID) {
        while (1) {
            log_v("taskSampleEntry2 running...");
            LOS_TaskDelay(1000);
        }
    }
    
    VOID taskSampleEntry1(VOID) {
        while (1) {
            log_v("taskSampleEntry1 running...");
            LOS_TaskDelay(2000);
        }
    }
    
    UINT32 taskSample(VOID) {
        UINT32           uwRet;
        UINT32           taskID1, taskID2;
        TSK_INIT_PARAM_S stTask1 = {0};
        stTask1.pfnTaskEntry     = (TSK_ENTRY_FUNC)taskSampleEntry1;
        stTask1.uwStackSize      = 0X1000;
        stTask1.pcName           = "taskSampleEntry1";
        stTask1.usTaskPrio       = 6;
        uwRet                    = LOS_TaskCreate(&taskID1, &stTask1);
        if (uwRet != LOS_OK) {
            log_v("create task1 failed\n");
        }
    
        stTask1.pfnTaskEntry = (TSK_ENTRY_FUNC)taskSampleEntry2;
        stTask1.uwStackSize  = 0X1000;
        stTask1.pcName       = "taskSampleEntry2";
        stTask1.usTaskPrio   = 7;
        uwRet                = LOS_TaskCreate(&taskID2, &stTask1);
        if (uwRet != LOS_OK) {
            log_v("create task2 failed\n");
        }
        return LOS_OK;
    }
    
    void app_main(void) {
        unsigned int ret;
    
        slog_test();
    
    #if 1 /* 0-原接口 1-cmsis_os2接口 */
        void cmsis_os2_main(void);
        cmsis_os2_main();
    #else
        ret = LOS_KernelInit();
        if (ret == LOS_OK) {
            taskSample();
            LOS_Start();
        }
    #endif
    
        while (1) {
            ;
        }
    }
    
    

測試成功界面如下:

image-20250225181020579

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 移植
    +關(guān)注

    關(guān)注

    1

    文章

    391

    瀏覽量

    28502
  • Liteos
    +關(guān)注

    關(guān)注

    10

    文章

    33

    瀏覽量

    47880
  • STM32F103RCT6
    +關(guān)注

    關(guān)注

    10

    文章

    24

    瀏覽量

    10362
收藏 0人收藏

    評(píng)論

    相關(guān)推薦

    STM32F103RCT6是什么?STM32F103RCT6有哪些特性?

    請(qǐng)問下STM32F103RCT6是什么?STM32F103RCT6有哪些特性?
    發(fā)表于 07-19 06:37

    STM32F103RCT6是什么

    STM32F103RCT6STM32F103RCT6是一種嵌入式-微控制器的集成電路(IC),32位 Cortex-M3內(nèi)核處理器,速度是72MHz,程序存儲(chǔ)器容量是256KB,程序存儲(chǔ)器類型
    發(fā)表于 08-06 08:36

    STM32F103RCT6數(shù)據(jù)手冊(cè)

    STM32F103RCT6芯片,相關(guān)學(xué)習(xí)資料,SYM32系列芯片,范圍廣,資料齊面,介紹全面。
    發(fā)表于 05-13 15:39 ?775次下載

    STM32F103RCT6用SPI和FATFS訪問SD卡

    STM32F103RCT6用SPI和FATFS訪問SD卡,參考了正點(diǎn)原子源碼
    發(fā)表于 08-03 18:20 ?142次下載

    stm32f103rct6引腳圖及使用手冊(cè)

    本文介紹stm32f103rct6引腳圖、stm32f103rct6電路圖、stm32f103rct6芯片介紹、使用手冊(cè)圖解。
    發(fā)表于 08-03 16:44 ?22.2w次閱讀
    <b class='flag-5'>stm32f103rct6</b>引腳圖及使用手冊(cè)

    STM32F103RCT6

    STM32F103RCT6引腳定義圖
    發(fā)表于 02-15 23:52 ?123次下載

    STM32F103RCT6 數(shù)據(jù)手冊(cè)

    STM32F103RCT6 數(shù)據(jù)手冊(cè)
    發(fā)表于 09-20 10:40 ?302次下載
    <b class='flag-5'>STM32F103RCT6</b> 數(shù)據(jù)手冊(cè)

    STM32F103RCT6的Sch原理圖免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是STM32F103RCT6的Sch原理圖免費(fèi)下載。
    發(fā)表于 04-25 08:00 ?0次下載
    <b class='flag-5'>STM32F103RCT6</b>的Sch原理圖免費(fèi)下載

    STM32F103RCT6的最小系統(tǒng)原理圖免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是STM32F103RCT6的最小系統(tǒng)原理圖免費(fèi)下載。
    發(fā)表于 08-15 08:00 ?591次下載
    <b class='flag-5'>STM32F103RCT6</b>的最小系統(tǒng)原理圖免費(fèi)下載

    STM32F103RCT6移植STM32F103C8T6需要注意那些事項(xiàng)

    本文檔的主要內(nèi)容詳細(xì)介紹的是STM32F103RCT6移植STM32F103C8T6需要注意那些事項(xiàng)。
    發(fā)表于 11-15 08:00 ?40次下載
    <b class='flag-5'>STM32F103RCT6</b><b class='flag-5'>移植</b>到<b class='flag-5'>STM32F103C8T6</b>需要注意那些事項(xiàng)

    基于STM32F103RCT6 移植W5500 最新ioLibrary_Driver(一)

    基于STM32F103RCT6 移植W5500 最新ioLibrary_Driver1. ioLibrary_Driver 1.1 ???????概述The ioLibrary means
    發(fā)表于 12-04 16:21 ?37次下載
    基于<b class='flag-5'>STM32F103RCT6</b> <b class='flag-5'>移植</b>W5500 最新ioLibrary_Driver(一)

    STM32F103RCT6 基于STM32Cube_FW_F1_V1.8.0庫建立工程模板

    STM32F103RCT6 基于STM32Cube_FW_F1_V1.8.0庫建立工程模板
    發(fā)表于 12-08 20:36 ?46次下載
    <b class='flag-5'>STM32F103RCT6</b> 基于<b class='flag-5'>STM32Cube_FW_F1_V</b>1.8.0庫建立工程模板

    STM32F103rct6標(biāo)準(zhǔn)版的電路原理圖

    本文檔的主要內(nèi)容詳細(xì)介紹的是STM32F103rct6標(biāo)準(zhǔn)版的電路原理圖免費(fèi)下載。
    發(fā)表于 03-21 14:56 ?0次下載

    STM32F103RCT6最小系統(tǒng)(高清PDF版)

    STM32F103RCT6最小系統(tǒng)全(高清PDF版)免費(fèi)下載。
    發(fā)表于 07-31 11:04 ?0次下載

    STM32F103RCT6的原理圖

    STM32F103RCT6的原理圖免費(fèi)下載。
    發(fā)表于 07-26 15:38 ?0次下載

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品
    主站蜘蛛池模板: 熟女久久久久久久久久久 | 精品国产5g影院天天爽 | 毛片免费大全 | 2017欧美狠狠色 | 国产亚洲精品网站在线视频 | 含羞草在线 | TIMI1TV天美传媒在线观看 | 交换娇妻呻吟声不停中文字幕 | 日本污ww视频网站 | 亚洲视频中文 | 午夜免费福利小电影 | 男女爽爽无遮挡午夜视频在线观看 | 日本双渗透 | 快穿做妓女好爽H | 天天爽夜夜爽 | 亚洲欧美中文字幕网站大全 | 日本熟妇乱妇熟色在线电影 | 黑色丝袜美腿美女被躁翻了 | 久久国产免费一区二区三区 | 簧片在线观看 | 国产亚洲精品免费视频 | 久久精品中文騷妇女内射 | 快穿女主有名器的H纯肉黄暴拉文 | 久久视频这里只精品6国产 久久视频在线视频观品15 | 欧美中文字幕一区二区三区 | 亚洲精品久久99蜜芽尤物TV | 亚洲免费网站观看视频 | 男男高H啪肉Np文多攻多一受 | 国内精品乱码卡一卡2卡三卡新区 | 果冻传媒在线观看进入窗口 | 色欲无码国产喷水AV精品 | 欧美怡红院视频一区二区三区 | 年轻的母亲4线在线观看完整 | 国产精品亚洲国产三区 | 欧美高清另类video | 中文字幕无码一区二区免费 | 大桥未久电影在线观看 | 哇嘎在线精品视频在线观看 | 免费成人高清在线视频 | 国产午夜a理论毛片在线影院 | 亚洲欧美另类无码专区 |