tlled 发表于 2022-7-2 11:22

【CW32F030CxTx StartKit测评】 freeRTOS移植

本帖最后由 tlled 于 2022-7-2 11:23 编辑

    在前两篇对芯片CW32F030的时钟和串口学习之后,下面尝试着移植freeRTOS系统到开发板,记录过程如下。

    一、freeRTOS源码下载

    1.1、下载地址:
   官网:https://www.freertos.org/   或者   https://sourceforge.net/projects/freertos/files/FreeRTOS/

    1.2、freeRTOS文件
    下面就是下载的源文件和解压后的文件
   

    二、创建项目工程

    首先要准备好,已经编译好的工程文件,在这个工程文件的基础上,在增加freeRTOS源码文件

    2.1、复制freeRTOS源文件

    2.1.1、将source文件复制到之前创建的工程项目中
   

    2.1.2、删除文件
   将下面三个文件之外的其他文件夹删除。
   

    2.1.3、freeRTOS配置文件
    需要一起复制下面的文件
   

    2.2、添加源码到工程项目
    将上面是文件添加到工程项目中
   

    2.3、主程序

#include "main.h"
#include "cw32f030_flash.h"
#include <stdio.h>
#include "FreeRTOS.h"
#include "task.h"
#include "led.h"
#include "usart.h"


TaskHandle_t StartTask_Handler;

void start_task(void *pvParameters)
{
      int i=1;
      while(1)
      {
                led1_tog();
                printf("task1 run \r\n");
                vTaskDelay(1000);
      }
}

void led_task(void *pvParameters)
{
      int i=1;
      while(1)
      {
                led2_tog();
                printf("task2 run \r\n");
                vTaskDelay(500);
      }
}

void rcc_config(void)
{
      uint8_t res = 0U;
      RCC_AHBPeriphClk_Enable(RCC_AHB_PERIPH_FLASH, ENABLE);   //打开FLASH时钟
      //RCC_HCLK_OUT();                                                         //通过PA04观察HCLK频率
      RCC_HSE_Enable( RCC_HSE_MODE_OSC, 16000000, RCC_HSE_DRIVER_NORMAL, RCC_HSE_FLT_CLOSE ); //开启外部高速时钟HSE,实际频率需要根据实际晶体频率进行填写
               
      RCC_PLL_Enable( RCC_PLLSOURCE_HSEOSC, 16000000, RCC_PLL_MUL_3 );   //开启PLL,PLL时钟来源为HSE
      FLASH_SetLatency(FLASH_Latency_2);    //频率大于24M需要配置FlashWait=2
      res = RCC_SysClk_Switch( RCC_SYSCLKSRC_PLL );                        //切换系统时钟到PLL
      if( res == 0x0U )                                                    //切换系统时钟成功
      {
                RCC_HSI_Disable();                                             //切换时钟到PLL后关闭源时钟HSI
      }
}


int32_t main(void)
{
      
      rcc_config();
      uart_init(115200);
      init_led();
      printf("\r\nfreeRTOS test!\r\n");
      
      xTaskCreate((TaskFunction_t)start_task,
                                                      (const char*   )"satrt_task",
                                                      (uint16_t                         )128,
                                                      (void*         )NULL,
                                                      (UBaseType_t   )1,
                                                      (TaskHandle_t* )&StartTask_Handler);
                                                      
      xTaskCreate((TaskFunction_t)led_task,
                                                      (const char*   )"led_task",
                                                      (uint16_t                         )128,
                                                      (void*         )NULL,
                                                      (UBaseType_t   )2,
                                                      (TaskHandle_t* )&StartTask_Handler);
      
      vTaskStartScheduler();
      
}

   三、编译项目

   3.1、编译上面创建好的项目,首次编译后会提示下面错误,需要配置freeRTOS
   

    3.2、修改FreeRTOSConfig.h
    我这里修改时钟和存储空间如下。再次编译就没有错误了。
   

    3.3、烧写代码
    上面编译后烧写到开发板上运行,发现程序运行不对。
      

    3.4、修改启动文件
    修改下面的中断函数为freeRTOS系统的函数
   
    重新编译再运行

    四、程序运行

    下载后重新运行,串口输出内容
   

    开发板上指示灯运行。
   

    五、工程文件

   


    上面就是我创建freeRTOS项目的过程。

chenjun89 发表于 2022-7-3 10:36

恭喜楼主喜提开发板,板子看起来很简洁啊。

koala889 发表于 2022-7-3 11:28

为啥要删除那三个文件夹

tlled 发表于 2022-7-4 09:06

koala889 发表于 2022-7-3 11:28
为啥要删除那三个文件夹

要保留这三个文件夹

koala889 发表于 2022-7-6 22:13

tlled 发表于 2022-7-4 09:06
要保留这三个文件夹

哦哦,看乱了~~

daichaodai 发表于 2022-7-7 08:01

谢谢分享,下载看看。

Bowclad 发表于 2022-9-5 21:47

这个好,刚好需要

fentianyou 发表于 2022-9-8 20:10

CW32F030CxTx 不错啊。   

febgxu 发表于 2022-9-8 20:36

这个freeRTOS有教程吗?   

ccook11 发表于 2022-9-10 19:10

可以移植rtthread吗   

olivem55arlowe 发表于 2022-11-2 17:31

freeRTOS占用多大的ram?

1988020566 发表于 2022-11-2 17:51

CW32F030CxTx可以运行哪些操作系统呢?

houjiakai 发表于 2022-11-2 18:45

freeRTOS需要注意哪些问题呢?

jackcat 发表于 2022-12-4 21:03

怎么确定freeRTOS移植成功?

yeates333 发表于 2022-12-5 20:48

freeRTOS互斥变量怎么搞?

mnynt121 发表于 2022-12-6 14:30

这个是不是兼容stm32的芯片呢?

usysm 发表于 2022-12-6 16:50

freeRTOS比ucos强吗?

wangdezhi 发表于 2022-12-6 18:00

freeRTOS的汇编怎么修改?

cashrwood 发表于 2022-12-10 11:06

是否有freeRTOS跟物联网连接的代码呢?

1988020566 发表于 2022-12-12 09:32

这个可以,freeRTOS教程很多。
页: [1] 2 3
查看完整版本: 【CW32F030CxTx StartKit测评】 freeRTOS移植