*T_T*

文章目录


前言

        FreeTOS可以帮助我们大大的提高开发效率,使代码程序可以进一步模块化,但是想使用的时候呢,网上很多都是些从官网上下载好源代码,提取好文件并依次添加到keil中,于我而言还是过于麻烦,为了达到快速使用FreeTOS的目的,所以就想到了在线库这个东东;但是如果你使用CubeMX的话...........  我用的是标准库。

一、FreeTOS的特点

FreeRTOS是一个开源的实时操作系统(RTOS),专门设计用于嵌入式系统。它提供了一个小巧、高效的操作系统内核,适用于各种不同的微控制器和微处理器架构。FreeRTOS具有以下特点:

  1. 实时性: FreeRTOS被设计为实时操作系统,能够满足嵌入式系统对于实时性和响应性的需求。

  2. 小巧: FreeRTOS的内核非常小巧,占用的内存和处理器资源非常少,适合于资源受限的嵌入式系统。

  3. 可移植性: FreeRTOS支持多种不同的处理器架构和编译器,因此可以很容易地移植到不同的硬件平台上。

  4. 开源: FreeRTOS是开源的,遵循MIT许可证,可以免费使用和修改。

  5. 丰富的功能: FreeRTOS提供了丰富的功能和API,包括任务管理、调度器、信号量、消息队列等,可以满足各种不同的嵌入式系统的需求。

基于这些特点,FreeRTOS被广泛应用于各种嵌入式系统中,包括工业控制、汽车电子、消费类电子产品等领域。

二、快速使用步骤

1.在keil上下载好FreeTOS的源码

2.新建工程

使用在线库,勾选好一些选项

OK,FreeTOS的环境就已经快速的搭建好了,接下来就是编写程序了

示例代码

这里以STM32F103RET6为例

#include "stm32f10x.h"                  // Device header
#include "FreeRTOS.h"                   // ARM.FreeRTOS::RTOS:Core
#include "task.h"                       // ARM.FreeRTOS::RTOS:Core


TaskHandle_t t1,t2;

void mytask1();
void mytask2();

int main()
{
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	
	GPIO_InitTypeDef m;
	m.GPIO_Mode=GPIO_Mode_Out_PP;
	m.GPIO_Pin=GPIO_Pin_4 | GPIO_Pin_3;
	m.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &m);
	
	

	xTaskCreate(mytask1, "mytask1", 255, NULL, 2, &t1);
	xTaskCreate(mytask2, "mytask2", 255, NULL, 2, &t2);
	vTaskStartScheduler();
	
}





void mytask1(void)
{
	
	for(;;){
		GPIO_WriteBit(GPIOA,GPIO_Pin_3, 1);
		vTaskDelay(500);
		GPIO_WriteBit(GPIOA,GPIO_Pin_3, 0);
		vTaskDelay(500);
		
	}
}


void mytask2(void)
{
	for(;;){
		GPIO_WriteBit(GPIOA,GPIO_Pin_4, 0);
		vTaskDelay(2000);
		GPIO_WriteBit(GPIOA,GPIO_Pin_4, 1);
		vTaskDelay(100);
	}
}

烧录到板子上可以看到,两个LED以不同的频率在闪烁

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐