020 project内のいろいろなファイルの中身はどうなっているか?

元のフォルダをどのように簡素化したか?

こんなポリシーです.

●SYM32-DISCOVERYとは無関係なファイルを削除

●周辺回路のUSB,RTOS,COM,virtual COM portなどの機能に関連するファイルを削除

●DFU関連ファイルを削除

●デバッガ関連ファイルを削除

●libフォルダの構造をフラットに改造

●ファイルの中身も、STM32-DISCOVERYに関係する部分だけを残して削除

その結果、project folderペインに見えている下記のファイルが全てになっています.

これ以上はビタ一文削除できません.

フォルダ構成

STM32 projectフォルダです.

bin ビルドした結果できたバイナリファイルが格納されます.

lib ライブラリファイルが格納されています.

lib\STM32F10x_StdPeriph_Driver STMicro社による周辺回路ライブラリが格納されています.

各ファイルの位置づけ

★★★ いじる可能性あり.理解必要.

★★ いじる可能性は少ないが、参照することはあるだろう.

★ ブラックボックスで放置してよい

★★ boardinit.c platform_config.h

STM32-DISCOVERYのreset直後に走らせる初期化ルーチンです.

クロックとかの設定をしているようです.

core_cm3.c core_cm3.h

ARM coretex-M3 CPUを動かすハードウエアに密着したルーチンです.

★★ startup_stm32f10x_md_vl_nortos.s

アセンブラソースファイルです.割り込み処理のようなCPUに密着したルーチンです.

割り込みルーチンの名前がこのファイルの中で定義されています.

抜粋するとこんなかんじの名前です.

.word FLASH_IRQHandler .word RCC_IRQHandler .word EXTI0_IRQHandler .word EXTI4_IRQHandler .word DMA1_Channel1_IRQHandler .word DMA1_Channel2_IRQHandler .word TIM1_BRK_TIM15_IRQHandler .word TIM3_IRQHandler .word TIM4_IRQHandler .word I2C1_EV_IRQHandler .word SPI1_IRQHandler .word USART1_IRQHandler .word RTCAlarm_IRQHandler .word CEC_IRQHandler

★★ STM32_VLD.h

STM32-DISCOVERYのプリント基板固有の定義をするファイルです.

たとえば、LEDはどのポートに接続されているかが記述されていますので、頻繁に参照する場面がありそうです.

stm32f10x_conf.h

STMicro社による周辺回路ライブラリをインクルードするファイルです.

★★ stm32f10x.h

STM32F100RB 固有の定義をするファイルです.

クロック周波数、IRQ番号、uint32_tのようなよく見かける型宣言、周辺回路レジスタの命名、などをやっています.

★★ system_stm32f10x.c system_stm32f10x.h

STM32-DISCOVERYのreset直後に走らせるクロック設定ルーチンがこのファイルに集中的に書かれています.

いちおう内容を知っておきたいファイルです.

128_8.ld

コンパイル後にリンカでリンクしますが、そのリンカスクリプトです.

★★★ main.c

ユーザープログラムなので、自分で記述します.

★★★ makefile

ビルドするためのmake fileです.

コマーシャルベースの統合開発環境では、makeを自分で書く必要はなく、裏でやってくれてるので楽です.

しかしフリー版の統合開発環境であるeclipseでは、makeを自分で書いてビルドするのだと思ってだいたい正解のようです.

素人には少々敷居が高くて困ったものですが、フリーなので仕方ないでしょう.

makefileの意味がわからない人はこれから勉強しましょう.

各ファイルの相関関係

下図は下から上へ流れて行くように描いてあります.