FREERTOS环境移植-stm32

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闪烁即说明移植成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值