STM32移植FreeRTOS(学习笔记)

一、下载FreeRTOS的资源包

直接搜freertos官网就行了,或者以下链接FreeRTOS - Market leading RTOS (Real Time Operating System) for embedded systems with Internet of Things extensions

二、移植FreeRTOS

一、文件移植

首先在工程文件中添加一个FreeRTOS的文件

然后里面创建3个目录,分别是src、lnc、port

1、src文件夹,主要存放.c文件,从刚刚下载的目录中找到source目录,FreeRTOSv9.0.0\FreeRTOS\Source,把所有.c文件复制到src目录

2、lnc文件夹主要存放.h的文件

找到刚刚下载的include目录FreeRTOSv9.0.0\FreeRTOS\Source\include,复制里面所有的.h文件到lnc目录

将FreeRTOSv9.0.0\FreeRTOS\Demo\CORTEX_STM32F103_Keil目录下的FreeRTOSConfig.h文件也复制到lnc目录下

3、port文件夹

FreeRTOSv9.0.0\FreeRTOSv9.0.0\FreeRTOS\Source\portable\RVDS\ARM_CM3目录下的所有文件复制到port路径

CM3是看你的板子内核来的,如果是F1就是CM3,如果是F4就是CM4,其他的自己百度一下

FreeRTOSv9.0.0\FreeRTOSv9.0.0\FreeRTOS\Source\portable\MemMang路径下的所有文件复制到port目录

以上文件都搞定了,以下是keil里面的一些配置

二、keil配置

1、点击魔术棒按钮、然后C/C++添加刚才创建的路径

2、点击三个箱子的按钮,添加FreeRTOS的目录,再将刚才的文件全部添加到,如下图

然后进入FreeRTOSConfig.h文件,拉到最后,在endif之前加上以下代码,这些是FreeRTOS定义好的,然后需要注释掉原来的中断函数,进入stm32f10x_it.c中,ctrl+f搜索

void SVC_Handler(void)、void PendSV_Handler(void)、void SysTick_Handler(void)把这几个空函数给注释掉

#define xPortPendSVHandler PendSV_Handler
#define vPortSVCHandler SVC_Handler
#define xPortSysTickHandler SysTick_Handler

好的以上就已经完成了基本的移植

三、测试

编译测试一下,看看有没有问题,然后可以写一个电灯的代码测试一下,GPIOC_Pin_13是最小系统板上的LED

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "freertos.h"
#include "task.h" 

TaskHandle_t myTaskHandler; //任务句柄
void myTask1(void *arg)		//LED闪烁的任务
{
	while(1)
	{
		GPIO_ResetBits(GPIOC,GPIO_Pin_13);
		vTaskDelay(500);
		GPIO_SetBits(GPIOC,GPIO_Pin_13);
		vTaskDelay(500);
	}
}

int main(void)
{
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//启动GPIO时钟
	
	GPIO_InitTypeDef GPIO_InitStructure;           //定义了一个结构体变量
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; 
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;      
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOC,&GPIO_InitStructure);          
	
	xTaskCreate(myTask1,"led1",64,NULL,2,&myTaskHandler);//创建任务
	vTaskStartScheduler();								//调用
	
	while(1)
	{
	}
}

没有板的可以试一下仿真看看波形,先打开仿真,下面记得填上对应的型号,不改仿真不了、

不改仿真不了、不改仿真不了

 

然后点击debug,选择逻辑分析仪(logic analyzer),setup,然后点击添加,填入PORTC.13,类型改成bit,ok,全速运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yw408

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值