STM32移植freertos

前言

      虽然一直在使用freertos实时系统,但是一直没有系统的记录自己的学习过程,此次趁着本次机会,把操作过程写成文字,纰漏之处,还望众多大佬们批评指正。

一:下载freertos源码

        1,freertos官网下载地址:https://sourceforge.net/projects/freertos/files/FreeRTOS/

        本次使用官网上最新版本,如图:        

        2,解压下载的压缩包<FreeRTOSv202012.00-LTS.exe>,解压后文件如图:

二:准备裸机工程

        文章中使用的STM32裸机程序,为使用STM32CubeMX生成的点灯程序。

三:移植

 1, 在STM32工程目录下创建文件夹<freertos>,将freertos压缩包解压后的FreeRTOS文件夹下的source文件夹整体复制到STM32工程目录下的freertos文件夹中,如图:

 2,打开MDK工程,创建FREERTOS分组并将相关源文件添加进分组,操作步骤如图:

 注:port.c在portable\RVDS\ARM_CM3路径下;heap_4.c在portable\MemMang路径下。

 3,添加头文件,如图:

 4,将freertos的配置文件<FreeRTOSConfig.h>复制到STM32工程的freertos\Source\include路径下,<FreeRTOSConfig.h>可以在解压后的FreeRTOS\Demo\CORTEX_STM32F103_Keil路径下找到。

5,更改STM32中断向量表(将图1内容修改成图2),如图:

 6,添加代码:

#include "main.h"
#include "usart.h"
#include "gpio.h"
#include "FreeRTOS.h"
#include "task.h"

void vTaskLED(void * pvParameters)
{
    portTickType xLastWakeTime;

    xLastWakeTime = xTaskGetTickCount();
    while(1){
        HAL_GPIO_TogglePin(LED0_GPIO_Port, LED0_Pin);
		HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);
        vTaskDelayUntil( &xLastWakeTime, ( 1000 / portTICK_RATE_MS ) );
    }
}

int main(void)
{
   
    HAL_Init();
    SystemClock_Config();
    MX_GPIO_Init();
    MX_USART1_UART_Init();
   
    printf("start!\r\n");
    xTaskCreate(vTaskLED, "LED0", 128, NULL, 4, NULL);
    vTaskStartScheduler();
   
    while (1);
}

7,编译。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值