FREERTOS环境移植-stm32
文章目录
本文将基于已经改好的FREERTOS包进行移植,下载链接在下载链接
一、MDK结构数添加相关文件
1.建立FreeRTOS_CORE分组
将FREERTOS文件夹下的七个.c文件包含进来
2.建立FreeRTOS_PORTABLE分组
将FREERTOS\portable\RVDS\ARM_CMx文件夹内的port.c包含进来,(ARM_CMx文件夹是你移植的arm内核版本,比如我是f407,就用CM4F) 再在FREERTOS\portable\MemMang下的heap_4.c包含进来。
二、清除相关注释
1.注释相关内容
总共三个函数,分别是 SVC_Handler / PendSV_Handler / SysTick_Handler
特别注意一下,使用freertos时强烈建议在生成cube工程时系统定时器使用TIM6/TIM7,不要用默认系统自带的嘀嗒定时器,这样在SysTick_Handler函数中应该是空的。
致此编译已经可以顺利通过了,0error,0warning
三、验证FREERTOS移植成功
#define START_TASK_PRIO 1
#define START_STK_SIZE 128
TaskHandle_t StartTask_Handler;
void start_task(void *pvParameters);
int main(void)
{
/*HAL_INIT-BEGIN*/
HAL_Init();
SystemClock_Config();
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOH_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
/*HAL_INIT-END*/
/*USER-DRIVER-BEGIN*/
USART1_INIT();
LED_Init();
/*USER-DRIVER-END*/
BaseType_t TaskCreateStatus;
TaskCreateStatus= xTaskCreate((TaskFunction_t )start_task,
(const char* )"start_task",
(uint16_t )START_STK_SIZE,
(void* )NULL,
(UBaseType_t )START_TASK_PRIO,
(TaskHandle_t* )&StartTask_Handler);
vTaskStartScheduler();
while(1){};
}
void start_task(void *pvParameters)
{
while(1)
{
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);
vTaskDelay(500);
}
}
LED闪烁即说明移植成功