標籤:
我在看os_cpu_c.c代碼時對下面這段話困惑了半天總是在百度的協助下找到了答案
/* 申明幾個函數,這裡要注意最後三個函數需要注釋掉,為什麼呢?
OS_CPU_SysTickHandler()定義在os_cpu_c.c中,是SysTick中斷的中斷處理函數,
而stm32f10x_it.c,中已經有該中斷函數的定義SysTick_Handler(),這裡也就
不需要了,是不是很奇怪官方移植版為什麼會這樣弄吧,後面我會解釋的。
OS_CPU_SysTickInit()定義在os_cpu_c.c中,用於初始化SysTick定時器,它
依賴於OS_CPU_SysTickClkFreq(),而此函數我們自己會實現,所以注釋掉。
OS_CPU_SysTickClkFreq()定義在BSP.C (Micrium\Software\EvalBoards)中,
而本文移植中並未用到BSP.C,後面我們會自己實現,因此可以把它注釋掉。
*/
之所以不在用OS_CPU_SysTickInit()等函數是因為在stm32f將自身韌體庫升級後
在cmss的core_cm3.h檔案中提供了一個更加更加便捷的函數SysTick_Config(uint32_t ticks)
用於設定SysTick.
在bsp.c中添加下面的函數來替換OS_CPU_SysTickInit()和其相關函數
void SysTick_Init(void)
{
/* SystemFrequency / 1000 1ms中斷一次 最大值
* SystemFrequency / 100 10ms中斷一次
* SystemFrequency / 10 100ms中斷一次 最小值
*/
//st3.0 用 SystemFrequency而st3.5 用 SystemCoreClock
SysTick_Config(SystemCoreClock /OS_TICKS_PER_SEC);
}
為什麼在ucos向stm32f103移植時說os_cpu_c.c中有三個函數如OS_CPU_SysTickInit()需要注釋掉