FreeRTOS_Transplant_Blinks Readme
1. 该工程主要用于介绍FreeRTOS移植过程,并建立2个Led任务运行来演示移植成功
2. 移植过程中FreeRTOS移植到工程的过程在此滤过,详情百度一下。
3. 工程建立完成后将中断和时钟相关宏放置在FreeRTOSConfig.h文件中,这里是关键
4. /* Definitions that map the FreeRTOS port interrupt handlers to their CMSIS standardnames. */
#define vPortSVCHandler SVC_Handler
#define xPortPendSVHandler PendSV_Handler
#define xPortSysTickHandler SysTick_Handler
#include "FreeRTOS.h"
#include "task.h"
void LED_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( macLED1_GPIO_CLK|macLED2_GPIO_CLK, ENABLE);
GPIO_InitStructure.GPIO_Pin = macLED1_GPIO_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(macLED1_GPIO_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = macLED2_GPIO_PIN;
GPIO_Init(macLED2_GPIO_PORT, &GPIO_InitStructure);
GPIO_SetBits(macLED1_GPIO_PORT, macLED1_GPIO_PIN);
GPIO_SetBits(macLED2_GPIO_PORT, macLED2_GPIO_PIN);
}
static void AppTaskCreate (void)
{
xTaskCreate(vTaskLED0, //任务函数
"vTaskLED0", //任务名称
512, //堆栈大小
NULL, //任务参数
1, //任务优先级
&xHandleTaskLED0 ); //任务句柄
xTaskCreate(vTaskLED1,
"vTaskLED1",
512,
NULL,
1,
&xHandleTaskLED1 );
}
void vTaskLED0(void *pvParameters)
{
while(1)
{
LED0( ON );
vTaskDelay(500);
LED0( OFF );
vTaskDelay(500);
}
}
void vTaskLED1(void *pvParameters)
{
while(1)
{
LED1( ON );
vTaskDelay(1000);
LED1( OFF );
vTaskDelay(1000);
}
}
static void vTaskLED0(void *pvParameters);
static void vTaskLED1(void *pvParameters);
static void AppTaskCreate (void);
static TaskHandle_t xHandleTaskLED0 = NULL;
static TaskHandle_t xHandleTaskLED1 = NULL;
10.主函数
int main(void)
{
/*LED硬件初始化*/
LED_GPIO_Config();
/*任务创建*/
AppTaskCreate();
/*启动调度器*/
vTaskStartScheduler();
while (1);
}
11.编译下载既可以看到2个led亮,FreeRTOS移植成功了。