1. 程式人生 > >uCOS:時鐘節拍程式碼追蹤

uCOS:時鐘節拍程式碼追蹤

uCos中的時鐘節拍可以基於軟中斷實現或者基於時鐘節拍任務(但是這個任務要給予很高的優先順序) 對於STM32(Cortex-M3)來說這個就是SysTick中斷0x0000003C 當中斷髮生時呼叫OS_CPU_SysTickHandler函式, 這樣就提供了系統的時鐘節拍 uCos中擴充套件的應用都是在HOOK函式中實現的, 程式關於Time的呼叫, 首先都是基於OSTime的, 其次由於在OSTimeTick函式中預留了OSTimeTickHook()函式 這樣可以方便我們在OSTimeTickHook()函式中新增我們自己的程式碼實現在系統中的呼叫 由於OSTimeTickHook()函式在OSTimeTick函式中, 所以每次Tick時都會呼叫這個函式,所以也就給了我們可以新增每次時鐘Tick都被系統 呼叫的機會。 由於OSTimeTickHook()函式中預留了App_TimeTickHook()函式提供給應用層的程式實現相應的擴充, 這樣就可以在應用層APP中,擴充套件一些我們想要的功能,例如Ctimer函式。 同時函式指標的應用更大程度的擴充套件了,我們可以擴充套件函式的功能的範圍。 在系統啟動多工後 的第一個任務TaskStart中(即呼叫過OSStart()函式後)呼叫OS_CPU_SysTickInit()完成對系統Tick的設定。 在設定Tick的時候,是由OS_CPU_SysTickClkFreq函式來獲得硬體的時鐘頻率 通過除以OS_TICKS_PER_SEC得到一個定時中斷時間,以後每隔一定的時間中斷一次。 追蹤的過程 App_TimeTickHook()(app.c)--OSTimeTickHook()(os_cpu_c.c)--OSTimeTick()(cpu_core.c) \ --OS_CPU_SysTickHandler()(os_cpu_c.c)--DCD  OS_CPU_SysTickHandler(vectors.s) 在追尋程式碼路徑的過程中, 沿著最容易看到的程式碼追蹤到它的上一級程式碼, 直到它的最底層實現, 這樣就可以把與這個相關的系統上的東西都可以瞭解了。