2020-12-04

freeRTOS移植
编写主任务
在freeROTS官网下载freeROTS源码
新建一个文件夹,将刚才解压文件夹中的 FreeROTS\Source\目录下的所有文件复制到新建文件夹中
freeROS\FreeRTOSv9.0.0\FreeRTOS\Source\portable\RVDS\ARM_CM3中的ARM_CM3复制到keil文件夹中
将解压的源码文件夹中的FreeRTOS\Demo\CORTEX_stm32f103_keil中的FreeRTOSConfig.h复制到自己新建的文件夹中
freeRTOS移植
打开商家提供的一个例程,在例程目录中,将刚才自己新建的文件夹复制进去

打开工程,在工程中新建组FreeRTOS

向组FreeRTOS添加文件
需要添加的文件都在刚才复制到工程目录的文件夹中,路径如下:
freeRTOS\tasks.c
freeRTOS\list.c
freeRTOS\portable\Keil\ARM_CM3\port.c
freeRTOS\portable\MemMang\heap_4.c

添加头文件路径,点击魔法棒选择c/c++一栏,选择IncludePath,添加需要的文件

进行实时操作系统下的编程,还需要对FreeRTOSConfig.h和stm32f10x_it.c两个文件进行修改

编写主任务
在main.c输入以下代码

/* FreeRTOS头文件*/
#include “FreeRTOS.h”
#include “task.h”
/stm32头文件/
#include “bsp_led.h”
#include “bsp_usart.h”
#include “stm32f10x.h”

void Task1_led1() //任务一
{
while(1)
{
LED1_ON;
vTaskDelay(500); //延时500ms
LED1_OFF;
vTaskDelay(500); //延时500ms
}
}

void Task2_uart() //任务二

while(1)
{
	Usart_SendString( DEBUG_USARTx,"贾哥你好帅\n");
	vTaskDelay(2000);	//延时2000ms
}

}

void Task3_led2() //任务二
{
while(1)
{
LED2_ON;
vTaskDelay(1000); //延时1000ms
LED2_OFF;
vTaskDelay(1000); //延时1000ms
}
}

int main(void)
{

 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);   //中断优先级设置为组4
  
 LED_GPIO_Config();		  	//LED初始化
 USART_Config();            //串口初始化
 xTaskCreate(Task1_led1,   //任务一函数指针
           "TASK1_led1",   //任务一名称
                    40,   //堆栈深度(字节)
                  NULL,   //任务参数为空
                     1,   //任务优先级设置,数字越大优先级越高
                 NULL);   //任务句柄为空
 
 xTaskCreate(Task2_uart,"TASK2_uart",40,NULL,2,NULL);  //同上
 xTaskCreate(Task3_led2,"TASK3_led2",40,NULL,3,NULL);  //同上
 
 vTaskStartScheduler();  //启动任务调度器,系统运行

while(1)
{
}
}
最后运行
来自:https://blog.csdn.net/zmhDD/article/details/110447481

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值