2014-09-25 110 views
0

我一直在使用xTimerChangePeriod在ARM Cortex-M3(運行freeRTOS)上執行LED動畫。我無法使用PWM,所以這就是爲什麼我要使用計時器任務完成它。如何在毫秒分辨率內保證xTimerChangePeriod?

動畫本質上是一個定時器回調,它在不同的時間間隔設置LED亮度。在每次回調之間,我使用xTimerChangePeriod更改延遲時間,使LED呈現淡入淡出效果。然而,我注意到,雖然經常在32ms指定延遲時,計時器將會愉快地給我一個延遲+/- 10ms關閉,有時它會得到一個延遲約375ms的呃逆(我用毫秒計數器來測量它)。

也許計時器任務被其他更高級的任務阻塞了嗎?有沒有一種方法可以保證定時器延遲不會被阻塞那麼久?

回答

0

什麼是調度器頻率?它是1kHz?您可以使計時器守護程序任務在系統中的優先級最高,因此這種方式永遠不會被其他任何事物搶佔。

#define configTIMER_TASK_PRIORITY (configMAX_PRIORITIES - 1)

也有可能,你做其他的定時器處理函數中的一些「錯誤」(如阻塞操作)...

+0

我有優先級最高的計時器任務。有可能我會在其他定時器處理程序中阻塞操作,我將不得不進行進一步調查。 – tll 2014-09-28 01:02:00

相關問題