玩轉STM32(17)理解SystemInit函數

前面分析了復位函數,在那裏發現它要調用SystemInit函數,那麼這個函數是做什麼用的呢?從名稱上來看它就是系統的初始化函數。這個函數在復位之後,就要立即調用的函數,可見它是非常關鍵的底層函數,這個函數主要內容包括對系統時鐘初始化(時鐘源選擇、鎖相環設置、分頻係數配置、AHB/APB的頻率、FLASH配置)。下面就來對這個函數的源碼進行一行一行地分析,以便掌握這個函數的作用。

 

SystemInit函數定義在文件system_stm32f4xx.c裏,這個文件是放在目錄LED_001\User下面,意味着讓用戶針對不同的需求進行修改的,爲什麼會這樣呢?因爲每個用戶對不同的運行頻率有不同的需求,比如節能的用戶,儘可能運行頻率低,而高性能的用戶,儘可能運行頻率高,這樣處理數據速度快。因此這個文件在不同用戶看來,是必須修改的。

下面來仔細地分析每一行代碼:

void SystemInit(void)

{

  /* FPU settings ------------------------------------------------------------*/

  #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)

    SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));  /* set CP10 and CP11 Full Access */

  #endif

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章