
最新FreeRtos(版本8.0)上手指南
最近折腾一块stm32f107rc的板子,摸索了一下FreeRTOS 的使用
发现起步不太难有点经验和大家分享。freertos 8
1,先从官网下载 FreeRTOS 8.0.0
2,用标准库(STM32F10x_StdPeriph_Lib_V3.5.0)模板建工程
3, 在工程中添加FreeRTOS 文件。tasks.c list.c queue.c heap_2.c
port.c 其中port.C是cotex M3的移植文件。freertos 8选择目录..\..\Source\portable\RVDS\ARM_CM3\
下的port.c
3,修改启动代码(.s文件)如下,主要是链接FreeRTOS的三个中断函数
IMPORT xPortPendSVHandler
IMPORT xPortSysTickHandler
IMPORT vPortSVCHandler
.....
DCD vPortSVCHandler ; SVCall Handler
DCD DebugMon_Handler ; Debug Monitor Handler
DCD 0 ; Reserved
DCD xPortPendSVHandler ; PendSV Handler
DCD xPortSysTickHandler ; SysTick Handler
4.在main中建立自己任务开始 rtos
/* Create one task. */
xTaskCreate( vTask1, /* Pointer to the function that implements the task. */
"Task 1", /* Text name for the task. This is to facilitate debugging only. */
200, /* Stack depth in words. */
NULL, /* We are not using the task parameter. */
1, /* This task will run at priority 1. */
NULL ); /* We are not using the task handle. */
/* Create one task. */
xTaskCreate( vTask2, /* Pointer to the function that implements the task. */
"Task 2", /* Text name for the task. This is to facilitate debugging only. */
200, /* Stack depth in words. */
NULL, /* We are not using the task parameter. */
2, /* This task will run at priority 1. */
NULL ); /* We are not using the task handle. */
/* Start the scheduler so our tasks start executing. */
vTaskStartScheduler();
..............
..............
void vTask1( void *pvParameters )

{
/* As per most tasks, this task is implemented in an infinite loop. */
while(1)
{
LED_Toggle(0);
LED_Toggle(2);
vTaskDelay(800);
}
}
void vTask2( void *pvParameters )
{
/* As per most tasks, this task is implemented in an infinite loop. */
while(1)
{
LED_Toggle(1);
LED_Toggle(3);
vTaskDelay(1600);
}
}
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-33352-1.html
手上都是