HowToLearning¶
- Table of contents
- HowToLearning
STM32CubeMXでプロジェクトを開いているときに、メニューバーのHelp-Docs&Resourcesをクリックすると、マイコンや評価ボードに応じたドキュメント(pdf)が簡単に入手できます。
STMicroのWebサイトは意外とレスポンスが遅い(2020年9月現在)ので、この素早さは重要です。
DataSheet¶
2.1 Full Compatibility throughout the family
に、STM32のほかのシリーズと載せ替えられるようにプリント配線板を設計するときの注意が書かれています。- ペリフェラルがAPB1,2のどちらの所属かは、同じ章のブロック図に書いてあります。
- ただし、Datasheetを
register boundary address
で検索して出てくる表のほうが字が大きくて分かりやすいかも。 - 省電力化したい場合は、APB2のペリフェラルは不使用にして、APB1ペリフェラルだけ使うのもありかもしれません。
- Timerは複数搭載されており、F429だとそのうちTIM6とTIM7が一番低機能なTimerです。
- FreeRTOSを使う場合は、TIM6かTIM7をHAL用にあてがう(Timebase SourceをSysTickからTIM6,7に変える)のがよいです。
- エラッタを参照するのに必要な、Revision codeの場所が
Device marking
の章に図示されています。
Reference Manual¶
- 2.3.1 Embedded SRAM を見ると、0x1000 0000に
Core Coupled Memory
があるので、リンカスクリプトをいじってスタックはそこに配置したほうがよさげです。 - 2.3.3 Bit banding で、GPIOのピン1本を高速に操作できる気がします(まだ試していません)
Programming Manual¶
- 2.1.1 より、プロセッサの動作モードが
Thread mode
とHandler mode
の2つあることが分かります。 - 2.1.2 より、スタックポインタが
main
とprocess
の2つあることが分かります。- アドレス0x00000000に置くのはmainスタックポインタの初期値です。
- FreeRTOSがどのように2つのスタックポインタを使い分けているかまでは、残念ながらこの文書ではわかりません。
- IPSR bit definitionの表から、いまThread modeなのかそうでないかを判定する処理が作れそうです。
Application Note¶
- STM32Cube firmware examples for STM32F4 Series に関しては、STM32CubeのCubeRepositoryに展開される STM32Cube_FW_xx_Vx.xx.x/Release_Notes.html ファイルを読んだほうが情報が新しいので、pdfを読む必要はありません。
Description of STM32F4xx HAL drivers¶
このドキュメントはCubeMXの Help-Docs&Resources にはリストアップされていないのですが、重要です。
STM32CubeのCubeRepositoryに展開される STM32Cube_FW_xx_Vx.xx.x/Release_Notes.html を開いて、そこにある
UM1725: Description of STM32F4xx HAL drivers のリンクから入手します。
なお、HALだけでなく LL (Low-layer drivers) のことについても書かれています。
CubeMXが自動生成するペリフェラル初期化記述は、基本的にはHAL APIを呼び出すものになります。
Project ManagerタブのAdvanced Settingsに表示される、Driver SelectorでLLを選ぶことで、Low-layer driverの呼び出しに変えることができます。
CubeRepositoryのSTM32Cube_FW_xx_Vx.xx.x/Projects¶
サンプルプログラムがいっぱい入っています。
何々ペリフェラルを動かしたい、というときに、参考になるものを探すには、同フォルダの STM32CubeProjectsList.html を見るとよいです。
ただし、このサンプルプログラム群はCubeMXで作られたものでは無いようです。
CubeMXで初期化コードを吐きつつサンプルプログラムと同じことをするプログラムを書きたい、という場合は、サンプルプログラムのソースを読んで各種ペリフェラルにどんな設定値を書き込んでいるかを調べ、それをCubeMXに設定するという面倒な作業が必要です。
なお、HAL_~やLL_~ APIのソースは STM32Cube_FW_xx_Vx.xx.x で配布されているのですが、新しいバージョンには新しいバグが混入している可能性が高いので、
- FWライブラリを更新するならば、まず現在のライブラリで自分の書いたプログラムをビルドして挙動をテストしておく。
が重要です。
なお、FWライブラリのバグに関しては、STM32のコミュニティ と ねむいさんのぶろぐ がよい情報源です。
累計表示回数:181
Updated by mole lord 5 months ago · 4 revisions