# RTOS **Repository Path**: liangmu-classmate/rtos ## Basic Information - **Project Name**: RTOS - **Description**: FreeRTOS 手动移植成功 - **Primary Language**: Unknown - **License**: AFL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2022-12-06 - **Last Updated**: 2023-12-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: FreeRTOS ## README # RTOS #### 介绍 手动移植FreeRTOS,测试完成 #### 软件 MDK CubeMX FreeRTOS源码:https://github.com/FreeRTOS/FreeRTOS-Kernel 此工程内包含GCC版本,复制到自己的项目里即可 #### 方法 1. 包含头文件: FreeRTOS_M3_gcc/inc FreeRTOS_M3_gcc/portable/ARM_CM3 2. 引用头文件: #include "FreeRTOS.h" #include "task.h" 3. stm32f1xx_it.c中添加以下代码: #include "FreeRTOS.h" #include "task.h" extern void xPortSysTickHandler(void); 删除 SVC_Handler() 和 PendSV_Handler()两个函数 SysTick_Handler中添加: if(xTaskGetSchedulerState()!=taskSCHEDULER_NOT_STARTED) { xPortSysTickHandler(); } 4. 任务: //任务1 void vTask1(void *pvParameters) { for(;;) { HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13); vTaskDelay(100); } } //任务2 void vTask2(void *pvParameters) { for(;;) { HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_6); vTaskDelay(1000); } } 5. 创建任务: xTaskCreate(vTask1,"LED",128,NULL,2,NULL); xTaskCreate(vTask2,"JDQ1",128,NULL,2,NULL); 6. 开启调度器: vTaskStartScheduler();