本帖最后由 keer_zu 于 2021-11-18 13:45 编辑
一般使用情况我们在开发的时候,我总是在main函数看到以下的代码,这让我感觉不是很爽
- int main()
- {
- xTaskCreate( vTask1, "Task 1", 1000, NULL, 1, NULL );
- xTaskCreate( vTask2, "Task 2", 1000, NULL, 1, NULL );
- xTaskCreate( vTask3, "Task 3", 1000, NULL, 2, NULL );
- vTaskStartScheduler();
- while(1);
- }
然后在每个task中,一般代码会这样写
- void vTask1( void *pvParameters )
- {
- volatile unsigned long ul;
- for( ;; )
- {
- xQueueSend( USART1_MSGQ, "task 1 !\n",portMAX_DELAY);
- for( ul = 0; ul < mainDELAY_LOOP_COUNT; ul++ );
- }
- }
而任务之间的通信也是比较繁琐,总体来说,代码不易维护,增减一个任务的话要改的东西太多了。为此我特意设计一个框架,可以很方便的增减任务,同时任务之间通过事件队列来通信。
当然,RTOS的优势不仅仅在于此。
|