本帖最后由 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项目的过程。
|