八 创建任务
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157#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内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复