CubeIDEはCubeMXと統合されてますが、元々は別れてたらしい、CubeIDEの特徴とも言える機能で周辺デバイスの設定だけで.iocファイルを作成して、buildで対応するコードを生成してコード側にはロジックの記述だけという役割分担のようです
<環境>
・Intel MacBook Ventura
・CubeIDE 1.10.0
参考は、
からTimerの初期設定と、Timerを使ったLチカを実行してみました、そのまんまですが、全体の流れと手順は、
Categories(TIM1) -> ModeのClock SourceをInternal Clock -> Parameter Setting(タイマーの動作設定) -> NVIC Setting(TIM1 update・・をEnableにチェック) -> main.cにTIM1の動作起動コードの追加 -> Core > Startup中のstartup_stm32f401retx.s(割り込みベクタ記述のアセンブラコード)中の割り込みベクターに対応する割り込み処理を記述(LED表示のトグル処理、stm32f4xx_it.c中に記述)
このLチカはタイマー割り込み使わずに普通に時間待ちしてもできる訳だけど、敢えて割り込み使った処理にしているだけです
※NVIC(Nested Vectored Interrupt Controller)、普通に割り込み優先順ごとに処理するハードウェア機能
以上完了後にBuildすれば実行可能ということ
参考ページの記述にはClock SourceをInternal Clockにすれば設定画面が開くとありましたが、リロード(?)しないと見えてこなかった
CubeMXの初期設定で作成された結果は、main.cの中にちゃんと見えて(184行目以降)きてますね
このディレクトリ構成はタイマー機能をMXで指定後に自動作成されるファイルを含んでいます、stm32f4xx — .cが該当します、stm32f4xx_hal_msp.c(mspはMCU Support Package)は周辺デバイス追加してもその中で複数の該当周辺デバイスの初期化コードを呼び出すので一個のままで、stm32f4x_it.cは周辺デバイスごとに追加されていくと思う
MXの設定で最初Prescallerを39999(10倍の値)にしてたので、1秒間隔じゃなく10秒間隔でブリンクしてましたが、Buildエラーさえでなけりゃ指定したままちゃんと動くということ
一度ST-LINKを経由した書き込まれたコードはFlash上への書き込みなので、ラズピコなどと同じく、電源切っても再度電源投入すればそのまま動き出します
動作時の動画、
admin



