*T_T*
前言
FreeTOS可以帮助我们大大的提高开发效率,使代码程序可以进一步模块化,但是想使用的时候呢,网上很多都是些从官网上下载好源代码,提取好文件并依次添加到keil中,于我而言还是过于麻烦,为了达到快速使用FreeTOS的目的,所以就想到了在线库这个东东;但是如果你使用CubeMX的话........... 我用的是标准库。
一、FreeTOS的特点
FreeRTOS是一个开源的实时操作系统(RTOS),专门设计用于嵌入式系统。它提供了一个小巧、高效的操作系统内核,适用于各种不同的微控制器和微处理器架构。FreeRTOS具有以下特点:
-
实时性: FreeRTOS被设计为实时操作系统,能够满足嵌入式系统对于实时性和响应性的需求。
-
小巧: FreeRTOS的内核非常小巧,占用的内存和处理器资源非常少,适合于资源受限的嵌入式系统。
-
可移植性: FreeRTOS支持多种不同的处理器架构和编译器,因此可以很容易地移植到不同的硬件平台上。
-
开源: FreeRTOS是开源的,遵循MIT许可证,可以免费使用和修改。
-
丰富的功能: 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以不同的频率在闪烁