Wiki¶
- Table of contents
- Wiki
STM32の機能や開発環境についてのまとめです。
何らかの機能、たとえば「液晶に絵を表示する」や「ゲームパッドから入力する」を実現することよりも、そういった機能を実現するための、疑う必要のない 堅牢な土台をつくる ことを主眼にしています。
評価ボードの選定¶
展示会のSTMicroブースでタダで配っていたボードでもよいのですが、機能てんこ盛りで2千円台で買えるNUCLEO-F429ZIを選びました。
Ethernet機能とUSBターゲット機能を使うのが目標です。
エラッタの確認¶
本当はボードを選ぶ前にすべきなのですが、マイコンに深刻なエラッタがあるかどうか確認します。
エラッタシートを読むのにかかる時間は、おかしな挙動に散々悩んだあとエラッタシートで問題を知るまでの時間よりずっと短く済むはずです。
STMicroのF429ZIのページ の リソース のところに エラッタシート があるので、それを見ます。
Standby Modeに関する制限、PA12はGPIO OutputでLowに固定しておくほうがよい、EtherはStore-and-Forward modeで使うべきでIPv6にも問題がある、などが分かります。
開発環境¶
DevEnv -- GNU MCU Eclipseを使ったビルド環境構築 記述量が多いので別ページへ
TortoiseGitの設定について¶
このwikiでは gitbucketにてサンプルソースを配布 しています。
Amazon FreeRTOSなどを参照しているため、cloneするときは □再帰的 にチェックを入れてください。
Eclipseのプロジェクト ide_ws1/nuc-f429-blink-afrtos が最新の実験環境で、ほかはあまり保守していません。
改行コードの問題で、TortoiseGitの設定画面で AutoCrLf:false SafeCrLf:false にしておかないと、CubeMXでGenerate Codeしなおしたときに余計なソース差分が検出されることがあって不便です。
クローンする前に、 TortoiseGit-設定 で このユーザの設定を編集(O) して以下のように書き換えておくことを推奨します。
[core]
autocrlf = false
safecrlf = false
なお、私(molelord)自身で作ったソースはMITライセンスです。
ただし、gitリポジトリにはSTMicroのツールが自動生成したソースやその他のオープンソースソフトウェアのソースも含めています。
それらは各ソースファイルに書かれた許諾文に従ってご使用ください。
STM32CubeMXについて¶
CubeMX自体かFWライブラリのバグで、「CubeMXでGenerate Codeしただけで何もいじっていないソースが、ビルドに失敗したり、ビルド成功しても実行中にHardFaultする」 ことがあります。
Generate Codeしたら、まずは何も手を加えずにビルドと実機動作確認をすべきです。
CubeMXは便利ですが、信用してはいけません。
また、よくやってしまうのがUSER CODE BEGIN~ENDでないところにユーザプログラムを書いてGenerate Codeに潰されることですが、これはこまめにソース管理システム(gitなど)に作業状態を記録することである程度ダメージを減らせます。
コーディング規則¶
私(molelord)自身で作ったソースは、以下の規則に従っています。
モノ | 名前 | 備考 |
---|---|---|
typedef名 | ~_td | _tは処理系が使うので、それと区別がつきやすいように |
グローバル変数 | g_~ | |
ファイル変数 | l_~ | Localのエル |
読み物¶
SerialWireDebug | デバッグをするための設定 |
SettingPll | PLL(クロック)の設定 |
HowToLearning | どのように学ぶか(主に、資料の探し方) |
UsingFreeRtos | FreeRTOSを使う |
UsingAmazonFreeRtos | AmazonのFreeRTOSを使う |
UsingLlDriver | Low Layer driverを使う |
DetectStackOverflow | スタックオーバフローを検出する |
ResearchMemory | リンカスクリプト、スタック、ヒープを研究する |
ModifyMakefile | Makefileのvpathの問題を直す、リリースビルド可能に、警告のエラー化 |
UsingUart | Uartを使う |
UsingCplusplus | C++を使う |
LarningGpio | GPIOを学ぶ |
TroubleShooting | トラブルシューティング |
累計表示回数:267
Updated by mole lord 3 months ago · 26 revisions