STM32/Standard Peripheral Libraryを使ったプロジェクトを作ってみる

プロジェクトを作る

STM32の製造・販売を行っているSTMicroelectronicsは以前はStandard Peripheral Libraryを提供していたが、今ではSTM32CubeMXとというツールとHAL driversも提供しており、どうもこちらを推しているらしい。よって当方もSTM32CubeMX & HAL driversを使用するようにしています。しかしながら意外とStandard Peripheral Libraryを使用した記事が多いので、まずはStandard Peripheral Libraryを使用したプロジェクトを作ってみます。

File >> New >> C++ Project を選択します。

C++ Project

Project name: にプロジェクト名を入力し、 Next > を押下します。

Target processor settings

各項目に対し、ターゲットとするCPUにあった設定値を記述します。 STM32F0DISCOVERY の場合、STM32F051R8T6が搭載されています。こちらはFlashが64KB、RAMが8KB搭載されていますので、これに合わせます。 Clock(Hz) は初期値のままとしました。
Content:Blinky (blink a led)Empty (add your own content) から選択できます。手早くLEDがチカチカするところを確認したかったため、前者を選択しました。
Use system calls はデフォルトの Freestanding(no POSIX sysstem calls) で良いと思います。
Trace outputNone(no trace output) としました。デフォルトの Semihosting DEBUG channel などの場合、Semihosting としての設定が必要となるようです。設定できていなければ、実行時にTRAPが発生するようです。
その他のチェックボックスもデフォルトのままとしました。

Folder Settins

こちらの画面についてもデフォルトのままとし Next > ボタンを押下します。

Select Configurations

この画面でもデフォルトのまま。 Next > を押下します。

Cross GNU ARM Toolchain

Toolchain name はデフォルトの GNU Tools for ARM Embedded Processors (arm-none-ebi-gcc) としました。また、 Toolchain path には、インストールしたToolchainのディレクトリを指定します。
設定できたら、 Finish ボタンを押下します。

ここまでできたらビルドしてみましょう。 Projcec >> Build Project を選択します。
ToolchainのPathに誤りがなければ以下のようなメッセージとともにビルドが終了します。


22:36:39 **** Build of configuration Debug for project Sample ****
make all
Building file: ../system/src/stm32f0-stdperiph/stm32f0xx_gpio.c
:
arm-none-eabi-size --format=berkeley "Sample.elf"
text data bss dec hex filename
4065 176 412 4653 122d Sample.elf
Finished building: Sample.siz

22:36:41 Build Finished (took 2s.500ms)

デバッグについて

まず、OpenOCDを起動します。
Run >> External Tools から設定済みのOpenOCDの起動コマンドを実行します。
成功した場合は、以下のようなメッセージが出力されます。


Open On-Chip Debugger 0.9.0 (2015-05-28-12:05)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
adapter speed: 1000 kHz
adapter_nsrst_delay: 100
none separate
srst_only separate srst_nogate srst_open_drain connect_deassert_srst
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : clock speed 950 kHz
Info : STLINK v2 JTAG v25 API v2 SWIM v0 VID 0x0483 PID 0x3748
Info : using stlink api v2
Info : Target voltage: 2.880856
Info : stm32f0x.cpu: hardware has 4 breakpoints, 2 watchpoints

また、STM32F0DISCOVERYの場合は LD2 が緑と赤とか交互に点滅します。

次に Run >> Debug Configurations… を選択します。

Create, manage, and run configurations

*Zylin Embedded debug(Native)を選択し、新規作成します。

Debugger

Debugger タブでは、 DebuggerEmbedded GDB を選択します。また、 GDB debugger には、インストールしたToolchainに含まれる gdb を選択します。

Commands

‘Initialize’ commands には以下のとおり入力します。


target extended-remote localhost:3333
monitor reset init
load
monitor reset halt

設定できたら、 Apply を押下した後、 Debug ボタンを推してみよう。

うまく動作した場合、 start , main で停止するので、その都度 Resume を行うと LD3 が点滅します。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください