打印
[CW32F030系列]

【CW32F030CxTx StartKit测评】 freeRTOS移植

[复制链接]
2662|40
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tlled|  楼主 | 2022-7-2 11:22 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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系统的函数
   
    重新编译再运行

    四、程序运行

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

    开发板上指示灯运行。
   

    五、工程文件

    cw32f030_freeRTOS_prj-20220702.rar (2.18 MB)


    上面就是我创建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
为啥要删除那三个文件夹

要保留这三个文件夹

使用特权

评论回复
5
koala889| | 2022-7-6 22:13 | 只看该作者
tlled 发表于 2022-7-4 09:06
要保留这三个文件夹

哦哦,看乱了~~

使用特权

评论回复
6
daichaodai| | 2022-7-7 08:01 | 只看该作者
谢谢分享,下载看看。

使用特权

评论回复
7
Bowclad| | 2022-9-5 21:47 | 只看该作者
这个好,刚好需要

使用特权

评论回复
8
fentianyou| | 2022-9-8 20:10 | 只看该作者
CW32F030CxTx 不错啊。   

使用特权

评论回复
9
febgxu| | 2022-9-8 20:36 | 只看该作者
这个freeRTOS有教程吗?   

使用特权

评论回复
10
ccook11| | 2022-9-10 19:10 | 只看该作者
可以移植rtthread吗   

使用特权

评论回复
11
olivem55arlowe| | 2022-11-2 17:31 | 只看该作者
freeRTOS占用多大的ram?

使用特权

评论回复
12
1988020566| | 2022-11-2 17:51 | 只看该作者
CW32F030CxTx可以运行哪些操作系统呢?

使用特权

评论回复
13
houjiakai| | 2022-11-2 18:45 | 只看该作者
freeRTOS需要注意哪些问题呢?

使用特权

评论回复
14
jackcat| | 2022-12-4 21:03 | 只看该作者
怎么确定freeRTOS移植成功?

使用特权

评论回复
15
yeates333| | 2022-12-5 20:48 | 只看该作者
freeRTOS互斥变量怎么搞?

使用特权

评论回复
16
mnynt121| | 2022-12-6 14:30 | 只看该作者
这个是不是兼容stm32的芯片呢?

使用特权

评论回复
17
usysm| | 2022-12-6 16:50 | 只看该作者
freeRTOS比ucos强吗?

使用特权

评论回复
18
wangdezhi| | 2022-12-6 18:00 | 只看该作者
freeRTOS的汇编怎么修改?

使用特权

评论回复
19
cashrwood| | 2022-12-10 11:06 | 只看该作者
是否有freeRTOS跟物联网连接的代码呢?

使用特权

评论回复
20
1988020566| | 2022-12-12 09:32 | 只看该作者
这个可以,freeRTOS教程很多。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

125

主题

691

帖子

6

粉丝