我是靠谱客的博主 感动花瓣,最近开发中收集的这篇文章主要介绍8 freertos任务-任务创建串口打印八 创建任务,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

八 创建任务

#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任务-任务创建串口打印八 创建任务所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部