概述
八 创建任务
#include <stdio.h>
#include "board.h"
#include "led.h"
#include "uart.h"
/*** System oscillator rate and clock rate on the CLKIN pin ****/
/**/const uint32_t OscRateIn = MAIN_OSC_XTAL_FREQ_HZ; /**/
/**/const uint32_t ExtRateIn = EXT_CLOCK_IN_FREQ_HZ; /**/
//系统复位
#define System_restart (LPC_SWM->PINENABLE0 = 0xffffffffUL)
/***************************************************************/
#include "FreeRTOSConfig.h"
/* FreeRTOS头文件 */
#include "FreeRTOS.h"
#include "task.h"
/**************************** 任务句柄 ********************************/
/*
* 任务句柄是一个指针,用于指向一个任务。
*/
/* LED任务句柄 */
static TaskHandle_t LED1_Task_Handle;
static TaskHandle_t UART_Task_Handle;
#define TASK_STACK_SIZE 32
/* Sets up system hardware
**********************************************************************
* @ 函数名 : BSP_Init
* @ 功能说明: 板级外设初始化,所有板子上的初始化均可放在这个函数里面
* @ 参数 :
* @ 返回值 : 无
*********************************************************************/
static void prvSetupHardware(void)
{
SystemCoreClockUpdate();
DEBUGINIT();
led_Init() ;
Board_UARTPutSTR("build date: " __DATE__ " build time: " __TIME__ "n");
}
/**********************************************************************
* @ 函数名 : vLED_Task0
* @ 功能说明: LED_Task任务主体
* @ 参数 :
* @ 返回值 : 无
********************************************************************/
static void vLED1_Task (void *pvParameters)
{
bool LedState = false;
u8 i=0;
while (1) {
LedState = (bool) !LedState;
for(i=0;i<8;i++)
{
Board_LED_Set(i, LedState);
vTaskDelay(500);
}
}
}
static void vUART_Task (void *pvParameters)
{
while (1) {
Board_UARTPutSTR("FreeRTOS 动态创建任务n");
vTaskDelay(1000);
}
}
/***********************************************************************
* @ 函数名 : AppTaskCreate
* @ 功能说明: 为了方便管理,所有的任务创建函数都放在这个函数里面
* @ 参数 : 无
* @ 返回值 : 无
**********************************************************************/
static void AppTaskCreate()
{
BaseType_t xReturn =pdPASS;
taskENTER_CRITICAL();//进入临界区,禁止中断打断
//
xReturn=xTaskCreate(vLED1_Task,
"vLED1_Task",
TASK_STACK_SIZE,
NULL,
(tskIDLE_PRIORITY + 1UL),
(TaskHandle_t *) &LED1_Task_Handle);
xReturn=xTaskCreate(vUART_Task,
"vUART_Task",
TASK_STACK_SIZE+32,
NULL,
(tskIDLE_PRIORITY + 1UL),
(TaskHandle_t *) &UART_Task_Handle);
if(pdPASS==xReturn)
{
printf("创建LED_Task任务成功n");
}
// vTaskDelete(LED1_Task_Handle);//删除AppTaskCreate任务
// vTaskDelete(UART_Task_Handle);//删除AppTaskCreate任务
taskEXIT_CRITICAL(); //退出临界区
}
/**
* @brief main routine for blinky example
* @return Function should not exit.
*/
int main(void)
{
prvSetupHardware();
Board_UARTPutSTR("FreeRTOS 动态创建任务n");
AppTaskCreate();
vTaskStartScheduler();//任务调度
/* Loop forever */
while (1) {
printf("FreeRTOS 运行失败n");
}
}
最后
以上就是感动花瓣为你收集整理的8 freertos任务-任务创建串口打印八 创建任务的全部内容,希望文章能够帮你解决8 freertos任务-任务创建串口打印八 创建任务所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复