STM 32 F 4 xxの件(二)――システムクロックの配置


新しい一眼レフ機に触れるたびに、この一眼レフ機のシステムクロックが何MHzなのか、Datasheetで説明されている最大システムクロックに達するにはどうすればいいのか、この一眼レフ機の外付けクロックは何MHzなのか、私は知りたいと思っています.もし遅延を使うなら、私はどのようにプログラムを書いて正確な遅延を実現することができますか?これらの問題は私が新しい単片機に接触する前に理解しなければならないと思います.
各ARM Cortex-Mシリーズの単片機にとって、メーカーは自分の単片機をよりよく普及させると同時に、設計者の使用を便利にし、製品開発サイクルを低減するために、この単片機の外付け関連レジスタと外付けの関連関数を実現し、パッケージ化し、公式サイトに置いて無料で使用する.STM 32 F 405 RGの標準外付けライブラリにはDSPコアの各種演算関数も含まれている.必要に応じてhttp://www2.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm 32-embedded-software/stm 32-standard-peripheral-libraries/stsw-stm 32065.html#ダウンロード.
標準外付けライブラリを使用する場合は、標準外付けライブラリのsystem_に基づいてstm 32 f 4 xx.cファイルのコード分析から分かる:
#if defined(STM32F40_41xxx) || defined(STM32F427_437xx) || defined(STM32F429_439xx) || defined(STM32F401xx) || defined(STM32F469_479xx)
 #define PLL_M      25
#elif defined (STM32F446xx)
 #define PLL_M      8
#elif defined (STM32F410xx) || defined (STM32F411xE)
 #if defined(USE_HSE_BYPASS)
  #define PLL_M      8    
 #else /* !USE_HSE_BYPASS */
  #define PLL_M      16
 #endif /* USE_HSE_BYPASS */
#else
#endif
#if defined (STM32F40_41xxx)
#define PLL_N      336
/* SYSCLK = PLL_VCO / PLL_P */
#define PLL_P      2
#endif
#if defined(STM32F40_41xxx)
  uint32_t SystemCoreClock = 168000000;
#endif

プログラミングマニュアルによるクロックレジスタの内容は、
PLL_VCO = (HSE_VALUE or HSI_VALUE/PLL_M) * PLL_N 
SYSCLK=PLL_VCO/PLL_P
式中、HSE_VALUEは単片機外接結晶振動の周波数を表し、HSI_VALUEは単片機内部発振器の周波数を表し,本実験板では外部25 MHzの結晶振動を用い,プログラム中の構成からSystemCoreClock=168000000と計算できた.