在1.3版本的RTOS-SDK下,关于vTaskDelay的问题

nson7
Posts: 4
Joined: Fri Dec 04, 2015 4:48 pm

在1.3版本的RTOS-SDK下,关于vTaskDelay的问题

Postby nson7 » Fri Dec 25, 2015 10:44 am

你们1个tick所需的时间是10ms, 如果我要在一个线程中sleep几个ms(少于10ms), 让其他优先级较低的线程运行,应该要这么做?
首先你们说“请勿修改 FreeRTOSConfig.h,改动并不会影响底层运行,无法生效。”,
因此在FreeRTOSConfig.h中"#define configTICK_RATE_HZ ( ( portTickType ) 100 )"这个无法修改。那是要用vTaskDelayUntil的这个API,还是用其他的方法呢?(请不要提供不靠谱的方法 :) )
望回复,谢谢。如有可能,提供一下demo程序。 :)

nson7
Posts: 4
Joined: Fri Dec 04, 2015 4:48 pm

Re: 在1.3版本的RTOS-SDK下,关于vTaskDelay的问题

Postby nson7 » Wed Dec 30, 2015 2:40 pm

能不能回复一下啊?已经五天过去了。到底能不能在一个线程中延迟1ms, 让其他优先级较低的线程运行?
望回复,谢谢! :x

ESP_Faye
Posts: 1646
Joined: Mon Oct 27, 2014 11:08 am

Re: 在1.3版本的RTOS-SDK下,关于vTaskDelay的问题

Postby ESP_Faye » Wed Dec 30, 2015 5:04 pm

您好,

您可以使用 os timer 定时,然后调用 freeRTOS 自带的函数,suspend 要挂起的任务。
或者在低优先级的任务运行之前,suspend 高优先级的任务,运行完之后,再 resume 该高优先级的任务。

感谢您对 ESP8266 的关注!

nson7
Posts: 4
Joined: Fri Dec 04, 2015 4:48 pm

Re: 在1.3版本的RTOS-SDK下,关于vTaskDelay的问题

Postby nson7 » Thu Dec 31, 2015 10:50 am

非常感谢你的回复,谢谢!(终于有回复了!)
还有就是——你觉得这个方法靠谱吗?现在不是刚学rtos的小白,有高低两个优先级线程,“低优先级的任务运行之前,suspend 高优先级的任务,运行完之后,再 resume 该高优先级的任务”;而是比方说有十个任务,要运行最低的任务要把优先级排在它前面的九个任务挂起,要运行第二低的任务要把优先级排在它前面的八个任务挂起,……
如果你提供升级优先级任务的方法,我勉强可以接受。——"1.运行高优先级的任务前,使用vTaskDelay(0);2.运行高优先级的任务后,把此高优先级任务降到最低;3.由于有vTaskDelay(0)使调度器重新启动,从而让低优先级的任务运行,运行低优先级的任务后,把之前的高优先级任务升到原来的优先级。”
现在我问个明确的问题就好了——“能不能设置1个tick所需的时间是1ms,也就是vTaskDelay(1)=1ms",能不能就一两个字的事,别再让我等5天了,谢谢,拜托了! :|

Who is online

Users browsing this forum: No registered users and 2 guests