EclipseとOpenOCDでSTM32(ARM)マイコン開発
Development Environment
Date : 2016/01/09
OS : Windows 7 (32bit)
IDE : Eclipse 4.5 Mars (Pleiades All in One)
Board: Nucleo-F103RB (STM32F103RBt6)
ICE : None (OnBoard ST-LINK/V2-1)
Cable: USB Mini-B
EclipseとOpenOCDを使ってマイコンの開発環境を整えます。
各種ソフトウェアのインストールからLED点灯、デバッグまでの作業記録となります。
STMicroelectronics(以下ST)のNucleoボードやDiscoveryボードであれば、ほとんど同じように環境を構築できるでしょう。
ここではST製マイコンを使用します。
情報量の多さ、サンプルコードの豊富さ、価格の安さ、ステップアップのしやすさなどから選択しました。
開発環境はST公式が推奨しているものを用いるのが無難だと思いますが、登録が必要だったり、制限があったり、ごちゃごちゃ勝手にインストールされたりするので、好きになれません。
それに公式推奨の開発環境のライセンスは何十万円もしますので、個人では手を出しにくいです。
なので、ここではEclipseを使用してフリーの開発環境を構築しています。
Eclipseはビルドボタンで独自のmakefileを使用できるので、大抵のコンパイラが使えます。
テキストエディタ + GNUツール群 + OpenOCD + GDBフロントエンド
でもいいのですが、IDEについてるコード解析および編集機能とGDBデバッグ機能は便利です。
Eclipseを入れたら必ずやる設定とよく使うショートカット
ARMの開発環境は他には下記のようなものがあります。
ARM開発環境まとめ
マイコンボード選択
STのマイコン以外にも多数の選択肢があります。
参考までに載せておきます。
秋月電子通商、若松通商、スイッチサイエンス、RSなどを参考にしました。
スイッチサイエンスのページは使い方の紹介などがあって助かります。
海外製品はお店による価格差がけっこうありますので、パーツ探しも醍醐味の一つです。
IoTやるならまず知っておきたいパーツ屋・オンラインショップ
STMicroelectronics
ST製でおすすめのボードは、Nucleo-F103RBまたはSTM32F4 Discoveryです。
基板にST-LINKシリーズのデバッガが搭載されているので、ボード本体とUSBケーブルさえあれば開発できます。
ライブラリとして、CMSIS、HALが揃っているのでSTマイコン同士の移植性が非常に高く、ステップアップしながら学習しやすいのも特徴です。
githubなどを検索すればコードが多数見つかります。
Nucleo-F103RB
\1,500という値段でお手軽に試せます。
Nucleoボードはmbedにも対応しているし、ピン配置などがシリーズ共通なので、互換性や移植性が高いです。
その中でもF103は古くて比較的情報が多いので、学習用に向いていると思います。
使い終われば、他の基板を開発しているときの、検証用や通信用として残しておくのもよいですし、フリスクケースに入れてデバッガとしても使用できます。
更にX-NUCLEOシリーズを乗せれば、BLE、モーター制御なども試せます。
STM32F4 Discovery
いろいろ機能がついて\2,000という安さです。
Discoveryボードは評価版ということもあって、多数の機能がついています。
F4Discoveryに付いているのは、3軸センサ、USB、オーディオです。
こちらも十分に古いので情報は多めです。
触っていて楽しいのは断然F4Discoveryの方でしょう。
CubeF4のサンプルでは、3軸センサでマウスとして認識させたり、オーディオの録再のサンプルもあるので、Nucleoボードの次のステップアップとしては最適です。
RTOSのTOPPERSも動かせます。
STM32F7 Discovery
更に慣れてきたら静電容量式のタッチディスプレイ、MicroSD、有線LANなどが付いたSTM32F7 Discoveryボードを使ってみるとよいでしょう。
タッチパネルの液晶があるので、それだけでいろいろ遊べます。
値段も高めですが、液晶が付いてこの価格設定は、他と比べてもお得だと思います。
uClinuxを載せることも可能です。
NXP Semiconductors
NXPは使ったことがないので詳しいことは不明です。
NXP系のマイコンを使う場合は、メモリマップのCheckSum ValidationとCodeReadProtectionに注意する必要があります。
開発環境にLPCXPressoやmbedを使用する場合は自動計算されるそうです。
LPC1347評価ボード
OM13045: LPCXpresso Board for LPC1347というボードが使いやすそうです。
このボードはLPC-LINKシリーズのデバッガが搭載されているので、必要なのはUSBケーブルだけです。
価格帯はSTより若干高めですが、それでも\2,500という安さに抑えられています。
Renesas
RZシリーズがARMコアとなります。
ただしルネサスはボードの販売をしていません。
チップだけ買ってハンダ付けするか、サードパーティ製のものを購入しましょう。
ルネサスは日本の企業なので、日本語の情報が豊富なのも嬉しいです。
GR-PEACH
GR-PEACHというのが1万円以下で買えるのでよさそうです。
USBでmbed書き込みか、RZ/A1H用のJTAGデバッガが使えます。
E1はRZシリーズには対応していないのでご注意ください。
RX621マイコンボード
RXシリーズはARMコアではありませんが、一応挙げておきます。
USBケーブルを繋ぐだけでデバッグできるそうです。
開発環境はHEWやCS+よりEclipseベースのe2 Studioがよいでしょう。
普通のEclipseにKPITのGNUツールチェインを組み合わせることもできます。
Atmel
こちらもARMコアだけではありませんが、有力なので挙げておきます。
Atmel AVRマイコンは有志が翻訳した日本語情報が豊富です。
開発環境はVisualStudioベースのAtmelStudioとなります。
Arduino
Arduinoには、基本的にAVRマイコンが載っています。
Arduino規格に合致する非公式互換ボードも多数あります。
日本語の情報も多いので始めやすいでしょう。
The Arduino Starter Kit(日本語版)
初めてArduinoを使うならこれがよいでしょう。
値段は少し高いですが、日本語の入門書の他にいろいろ部品が付いているので長く遊べると思います。
Arduino UNO R3
上記のStarter Kitに付属しているボードはコレです。
ESP-WROOM-02開発ボード
ESP-WROOM-02 Arduino互換ボード
安くてWi-Fiが使えて、日本語の情報が豊富です。
回路図がわかりやすいので、[モジュール](ESP-WROOM-02 Wi-Fiモジュール)を買ってきて自作の練習をするのもよいでしょう。
どちらもArduino IDEが使えます。
mbed
mbed対応ボードは、いろいろなマイコンが搭載されています。
STのNucleoボードもmbedに対応しています。
USBドライバを入れて、何のボード、何のコアを使っているのかさえ分かれば動きます。
とくかく早く簡単に使いたいという場合はよいでしょう。
ソースコードをエクスポートしてデバッグすることもできます。
手間はかかりますがローカルの開発環境を構築することもできます。
Raspberry Pi
言わずと知れたラズパイシリーズです。
これらはLinuxを載せるので、ほぼPC環境と変わりません。
喋らせたりしたいならコレで決まりです。
一つくらいもっておいてもいいでしょう。
小型PC「ラズベリー・パイ」で自作した神作品10選の猛者たちが天才過ぎる!
【ラズパイ】海外のおもしろRaspberry pi作品集(2)
極小ボードコンピューティング
極小PCという言葉は何故か惹かれます。
小さくても性能は十分、Linuxを搭載できます。
紹介はしませんが、Androidを載せてるスティックタイプの製品もここに分類されるでしょう。
Intel Edison Breakout Board Kit
Intel EdisonはSDカードサイズより少し大きいくらいです。
Wi-FiとBluetoothが付いてます。
Yocto Linuxを搭載できます。
Raspberry Pi
ラズパイシリーズなら、Wi-FiとBluetooth(BLE可)が載ったRPi3がオススメです。
ワンコインで買えるPiZeroもいいですが、こちらはほぼ売ってません。
RPi用モジュールも種類が豊富なので、使いみちが多いでしょう。
pcDuino3 Nano
OpenGL, OpenVGに対応していてなかなかパワフルです。
その他
FTDIのUSBシリアル変換ケーブルも一本くらい持っておくとよいでしょう。
UARTでRS-232Cの通信が簡単に行えます。
Arduinoの書き込みにも使えます。
ドライバはUSBドライバと仮想COMポートの二段構成となっています。
いろいろありますが、ケーブル付きが使いやすいです。
電圧の違いにご注意を。
TTL-232R-3V3
SSCI-010320
DEV-09873
USB2UART-CP2102
AE-FT234X
資料
まずは資料を揃える必要があります。
マイコン関連は資料を集めたり環境を整えるだけでも結構大変です。
ボード名: Nucleo-F103RB
搭載MCU : STM32F103RBt6
アーキテクチャ: ARM Cortex-M3
Nucleo-F103RBの資料
NUCLEO-XXXXRX - STM32 Nucleo-64 boards
表面的なNucleoボードのスペックのみ記載されています。
UM1724 User manual - STM32 Nucleo-64 boards
ボタンやLEDが接続されているポート、HSEの利用の仕方、回路図などが記載されています。
重要な情報が欄外に注釈として書かれていたりするので情報を探すのが大変です。
STM32F103RBt6の資料
RM0008 リファレンスマニュアル - STM32F103xx 日本語版
メモリマップやペリフェラルの詳細、各種レジスタなどについて記載されています。
ソフトウェアの開発で一番よく使うドキュメントとなるでしょう。
RM0008 日本語
のキーワードで検索すると幾つか見つかります。
DS5319 データシート - STM32F103x6 Rev8 日本語版
DS5319 DataSheet - STM32F103xB
メモリマップやペリフェラル、クロック構成図、電気特性などについて記載されています。
ハードウェア的な情報が豊富です。
PM0056 Programming manual - Cortex-M3
Cortex-M3アーキテクチャ、命令セットなどが記載されています。
アセンブラなどが必要になった場合に必要となる資料です。
ARMの資料
Cortex-M3 テクニカルリファレンス マニュアル
メモリマップ、例外(割込)、命令のタイミング、用語集などが載っています。
AMBA Specification Rev 2.0
AHB(HCLK)、APB(PCLK)などの用語の説明が載っています。
ダウンロードするには登録が必要です。
ライブラリの資料
たとえばHALは、HALドライバと呼ばれたり、HALライブラリと呼ばれたりしますが、どちらも同じものを指します。
ドライバとは低位のレイヤー、つまりハードウェアに近い部分を処理するソフトウェアのことを指します。
ライブラリとは再利用性を高めたコード群を指します。
※この場合のコードはソースコードの他にオブジェクトコードも含みます。
UM1850 - STM32F1xx HAL drivers
HALのマニュアルです。
機能の説明だけでなく使い方の手順まで書かれています。
UM1061 - STM32F2xx Standard Peripheral Library
Standard Peripheral LibraryはSPLやSTDなどと省略されますが、ここではSPLとします。
SPLのマニュアルです。
SPLはHALの前に使われていたライブラリです。
この資料はF2向けなので適宜読み替える必要がありますが、ライブラリの使い方に大きな違いはありません。
サンプルなど
STM32CubeF1
HALを使用したさまざまなサンプルが収録されています。
といってもNucleoボードではあまりサンプルはありません。
Discoveryボードを利用するときは大いに役立つでしょう。
画面下のDownloadボタンから入手できます。
すぐ上にOrder From STと書いてますが、ボードの注文フォームを流用しているだけなので、気にせずダウンロードしてしまってください。
STSW-STM32143 - STM32 Nucleo examples, based on SPL
SPLを使用したサンプルです。
STM32Cubeに誘導されているのが紛らわしいです。
STM32F103RB
デザイン・リソースのApplication Noteに様々な使い方が解説されています。
また、Related Tools and Softwareにはライブラリやツールなどが載ってます。
STM32 Embedded Software
対応するソフトウェアやライブラリを探すならこちらページの方がよいでしょう。
開発環境
開発環境を整えます。
Eclipse、ツールチェインなどのインストールが必要です。
0. Pleiadesとは
PleiadesはEclipseと様々な環境がセットになったパッケージです。
本来、C/C++の開発環境を整えようと思ったら、Eclipse本体、Java実行用JRE、GNU環境のMinGW(またはCygwin)、C/C++開発プラグインのCDT、環境Pathの設定など様々な作業が必要となります。
Pleiadesをインストールすれば、それらの煩雑な作業をある程度省略できます。
1. Pleiadesのダウンロード
Pleiades All in One
最新版(Eclipse 4.5 Mars)のPleiadesをダウンロードします。
今回は環境に合わせて、C/C++, 32bit, Full Edition(約400MB)をインストールします。
2. Eclipseのインストール
ダウンロードしたPleiadesのzipファイルをC:\dev\ARM\
に展開(解凍)します。
パスはご自分の環境に合わせて読み替えてください。
階層が深いと展開時に名前が長すぎてエラーが発生することがあるので注意してください。
ダウンロードフォルダやデスクトップに展開するとエラーとなる可能性が高いです。
CRCエラーが出て解凍できない場合はWinRARを使うと問題が解決する可能性があります。
3. Eclipseの起動
初回起動時にはworkspaceを指定します。
デフォルトでは下記のような構成になります。
C:\dev\ARM\pleiades
├─eclipse
└─workspace
4. Eclipseプラグインの追加
プラグインのインストール画面を開きます。
Eclipse: メニュー => ヘルプ => 新規ソフトウェアのインストール
追加ボタンを押し、リポジトリの追加を行います。
Name : GNU ARM Eclipse Plug-ins
Location: http://gnuarmeclipse.sourceforge.net/updates
すべて選択してインストールします。
STM32Fx用のテンプレートなどが含まれています。
参考: How to install the GNU ARM Eclipse plug-ins?
5. ソフトウェアのインストール
Toolchainのインストール
GCC ARM Embedded
ダウンロードページ
gcc-arm-none-eabi-5_2-2015q4-20151219-win32.zip
ARM用のコンパイラ、アセンブラ、リンカなどが含まれています。
C:\dev\ARM\Toolchain
に展開します。
デフォルトのProgram Filesでもかまいませんが、パスが長かったり空白が入ったりするのでオススメしません。
Eclipseの初回ビルド時にToolchainの場所を指定しますのでパスを通す必要はありません。
C:\dev\ARM\Toolchain
├─arm-none-eabi
├─bin
├─lib
└─share
Build Toolのインストール
GNU ARM Eclipse Windows Build Tools(github)
gnuarmeclipse-build-tools-win32-2.6-201507152002-setup.exe
make, rmなどが含まれています。
C:\dev\ARM\BuildTools
にインストールします。
デフォルトのProgram Files
でもかまいませんが、パスが長かったり空白が入ったりするのでオススメできません。
C:\dev\ARM\BuildTools
├─bin
├─gnuarmeclipse
└─license
OpenOCDのインストール
GNU ARM Eclipse OpenOCD(github)
gnuarmeclipse-openocd-win32-0.10.0-201510281129-dev-setup.exe
OpenOCDはGDBサーバーおよびプログラマとなります。
必要なcfgファイルはscripts
フォルダに用意されています。
C:\dev\ARM\OpenOCD
にインストールします。
デフォルトのProgram Files
でもかまいませんが、パスが長かったり空白が入ったりするのでオススメできません。
C:\dev\ARM\OpenOCD
├─bin
...
└─scripts
STM32 ST-LINK utility
STM32 ST-LINK utility
STのデバッガ、プログラマです。
何かあったとき複数の手段があると原因の絞り込みに役立ちます。
今回は使用しませんが、あると便利です。
STM32 CubeMX
STM32CubeMX
STのコードジェネレータです。
発振回路やペリフェラルの初期化用コードを生成するのに便利です。
機能を同時に使用できるか確認するのにも使えます。
クロックツリーの確認も便利です。
しかし、これ単体では動かすのは大変なので、CubeF1のサンプルと共に使います。
CubeF1の方にはBSPと呼ばれるボードの機能を簡単に使えるライブラリもついています。
ST-LINK/V2-1
0. ST-LINKとは
STが開発したICE(デバッガ)の一種です。
ハードウェアを直接デバッグするのに必要になりますが、NucleoボードにはST-LINK/V2-1が搭載されているので、今回は別途用意する必要はありません。
Discoveryボードの場合は、ST-LINK/V2が乗っている場合もあるのでデータシートでの確認が必要です。
1. ST-LINK/V2-1用USBドライバをインストール
Nucleo-F103RBに搭載されているのはST-LINK/V2-1です。
ここで間違ったドライバをインストールすると、書き込みはできるが、デバッグができないなどの症状が起こります。
正しいドライバを選択しましょう。
下記2つはどちらでも問題ありませんが、全部入りのSTSW-LINK009の方をオススメしておきます。
STSW-LINK009
ST-Link, ST-Link/V2, ST-Link/V2-1 USB driver signed for XP, Windows7, Windows8
※STSW-LINK008はSTSW-LINK009に統合されました。
ST Link Driver
stlinknucleodriversigned.zip
Nucleo用のUSBドライバです。
2. Nucleo-F103RBを接続
Nucleo-F103RBを接続ドライバをインストールしたら、Nucleo-F103RBをUSB Mini-Bケーブルでパソコンに接続します。外付けドライブとして認識されていれば成功です。
3. ST-LINK/V2-1用ファームウェアをアップグレード
Nucleo Firmware
STSW-LINK007
ST-LINK/V2-1 firmware upgrade
解凍すると実行ファイル(jar, exe)が見つかりますが、どちらでもアップグレードが行えます。
jarはMacやLinuxでアップグレードを行うために追加されたものです。
あとは画面の指示に従ってファームウェアのアップグレードを行います。
STSW-LINK007
├─NewAppliMacLinuxWindows
│ └─STLinkUpgrade.jar
└─OldAppliWindowsOnly
└─ST-LinkUpgrade.exe
Eclipseの設定
1. プロジェクトの作成
プロジェクトの新規作成画面を開きます。
Eclipse: メニュー => ファイル => 新規 => C プロジェクト
プロジェクト名(任意)を入力し、タイプを選択します。
Project Name: nucleo_test
Project Type: STM32F10x C/C++ Project
Toolchain : Cross ARM GCC
次へ
C プロジェクト(Target processor settings)
データシートを調べて、該当する値が間違っていないか確認します。
おそらくデフォルトのままで大丈夫でしょう。
Chip family : STM32f10x Medium Density
Flash size(KB) : 128
RAM size(KB) : 20
External clock(Hz) : 8000000
Contents : Blinky (blink a led)
Use system calls : Freestanding (no POSIX system calls)
Trace output : Semihosting DEBUG channel
Check some warnings : checked
Check most warnings : unchecked
Enable-Werror : unchecked
Use -Og on debug : checked
Use newlib nano : checked
Exclude unused : unchecked
Use link optimizations: unchecked
オプションを解説します。
Use system calls: Freestanding(no POSIX sysstem calls)
GCCのリンカオプションで、-ffreestandingを追加します。
普通に組み込みで使う分にはこれで問題ありません。
フリースタンディング環境
Use system calls: POSIX(system calls implemented by application code)
アプリケーションコードにて実装と書いてあります。
stm32f1xxのテンプレートにnewlibが含まれていますので、このオプション用でしょう。
動作が不安定になった場合は、Freestandingにしましょう。
Newlib
Use system calls: Semihosting(POSIX system calls via host)
ホスト経由でシステムコールを使うと書かれています。
詳しい動作はソースコードを追ってください。
Trace output: ARM ITM(via SWO)
デバッガにJ-Linkを使用している場合に選択できるオプションです。
NecleoボードのデバッガはST-LINK/V2-1なので、使用できません。
Trace output: Semihosting STDOUT stream
Semihosting経由でputsやprintfを使用できるようです。
ただし、非常に低速なのでオススメできません。
Trace output: Semihosting DEBUG channel
Semihostingを有効にするとEclipseのコンソールにテキストを出力できます。
SemihostingとはARMコアからホストPCへメッセージを送る仕組みです。
Semihostingとは
※Eclipseは自動でやってくれるので問題ありませんが、コマンドラインから手動でデバッグをする場合は、semihostingを有効化しないとエラーで落ちるので要注意です。
ソースコード内にコメントで注意書きがあります。
※Semihostingなしでメッセージをやりとりしたい場合は、UARTを有効にして、シリアル-USB変換ケーブルを使います。
Use newlib nano
リンカオプションで--specs=nano.specsを使用します。
最低限のシステムコールの実装をリンクするようです。
Exclude unused
使用しないファイルをビルド除外に設定できるようです。
使用しないとコンパイル時間が長くなりますが、トラブルの元ですので、チェックはつけない方がよいでしょう。
次へ
C プロジェクト(Folders settings)
デフォルトのままで問題ありません。
Include folder : include
Source folder : src
System folder : system
CMSIS library folder: cmsis
C library folder : newlib
Linker script folder: ldscripts
次へ
C プロジェクト(構成の選択)
リリースビルドはいらないのでチェックを外します。
Debug: checked
Release: unchecked
次へ
C プロジェクト(Cross GNU ARM Toolchain)
ツールチェインをインストールしたフォルダを指定します。
Toolchain name: GNU Tools for ARM Embedded Processors (arm-none-ebi-gcc)
Toolchain path: C:\dev\ARM\Toolchain\bin
完了
2. 外部ツールの設定
OpenOCDが繋がるかどうか確認するための作業です。
Eclipseの外部ツールの設定画面を開きます。
Eclipse: メニュー => 実行 => 外部ツール => 外部ツールの構成
プログラムを選択し、新規ボタンを押して、新規構成
を追加します。
追加された新規構成
を選択し、項目を入力します。
メインタブ
名前: OpenOCD(F103RB)
ロケーション: ${openocd_path}\${openocd_executable}
作業ディレクトリ: ${openocd_path}\..\scripts
引数: -s "${openocd_path}\..\scripts" -f board/st_nucleo_f103rb.cfg
ビルドタブ
起動前にビルド: unchecked
共通タブ
お気に入りのメニューに表示
外部ツール: checked
適用
閉じる
メインタブはストリング置換変数を用いずに記述することができます。
ストリング置換変数の内容は設定で確認できます。
設定画面を開き、フィルターにストリング置換
と入力すると、簡単に絞り込めます。
Eclipse: メニュー => ウィンドウ => 設定
設定: 実行デバッグ => ストリング置換
ストリング置換変数を展開すると下記のような状態となります。
名前: OpenOCD(F103RB)
ロケーション: C:\dev\ARM\OpenOCD\binopenocd.exe
作業ディレクトリ: C:\dev\ARM\OpenOCD\scripts
引数: -s "C:\dev\ARM\OpenOCD\scripts" -f board/st_nucleo_f103rb.cfg
3. OpenOCDの起動を確認
設定が終わったら、OpenOCDを起動して確認します。
Eclipse: メニュー => 実行 => 外部ツール => OpenOCD(F103RB)
OpenOCDを実行するとコンソール ビューに赤文字でメッセージが出力されます。
Nucleo-F103RBのLED(LD1)がカラフルに点滅していたら成功です。
コンソール ビューに終了ボタンが表示されているので停止します。
4. デバッグの設定
Eclipseのデバッグ構成を設定します。
Eclipse: メニュー => 実行 => デバッグの構成
左側の項目からGDB OpenOCD Debuggingを選択します。
新規構成ボタンをおして、nucleo_test Debug
を追加し、項目を入力します。
デバッガータブ
OpenOCD Setup
Config optionsにOpenOCDの起動時の引数を設定します。
Start OpenOCD locally: checked
実行可能ファイル: ${openocd_path}/${openocd_executable}
GDB port: 3333
Telnet port: 4444
Config options: -s "${openocd_path}\..\scripts" -f board/st_nucleo_f103rb.cfg
GDB Client Setup
実行可能ファイル: ${cross_prefix}gdb${cross_suffix}
その他のオプション:
コマンド: set mem inaccessible-by-default off
始動タブ
Initialize commands
チェックをつけます。
Enable ARM semihosting.: checked
Load Symbols and Executable
シンボルのロード: checked
Use project binary: selected
実行ファイルのロード: checked
Use project binary: selected
ランタイム・オプション
Debug in RAM: unchecked
Run/Restart Commands
Pre-run/Restart reset.: unchecked
Set breakpoint at: checked & main
継続: checked
共通タブ
チェックを付けます。
お気に入りのメニューに表示
デバッグ: checked
適用
閉じる
5. ソースコードの修正
Eclipseはプロジェクトを追加した直後に、ソースコードのパース(解析)を行います。
それによりコード片のインデックスを作成し、高度なデバッグ機能を実現しているのです。
なので、インデックスの作成前に、コードを修正しようとすると、エラーだらけになりますが、慌てずにインデックスの作成完了を待ちましょう。
ヘッダーが存在するのに未定義となる場合は、インデックスの再構築を試してみましょう。
STM32F4xxなどのテンプレートにはエラーが混じってしまっているようで、要修正となります。
今回はSTM32F1xxのテンプレートなので特にエラーの修正は必要がないと思います。
ちなみに、STM32F1xxのテンプレートではStd-Periph-Libが使用されていますが、STM32F4xxなどはHALが使用さます。
Nucleo-F103RBボードではPA5の出力がLD2につながっているので、修正します。
PA5というのはPORT Aの5番目(5bit目)のレジスタという意味です。
データシートをチェックして調べてみましょう。
初めてデータシートを読んだ時はPA5とPORTA5が同じものだとわからなくて悩んだ覚えがあります。
BlinkLed.c
// Port numbers: 0=A, 1=B, 2=C, 3=D, 4=E, 5=F, 6=G, ...
#define BLINK_PORT_NUMBER (0)
#define BLINK_PIN_NUMBER (5)
6. プロジェクトのビルドおよびデバッグ
Eclipseプロジェクトのビルドを行います。
Eclipse: メニュー => プロジェクト => すべてビルド(Ctrl + B)
必要なソフトがすべてインストールされていれば問題なくビルドできるでしょう。
つづけて、Eclipseプロジェクトのデバッグを行います。
Eclipse: メニュー => 実行 => デバッグ => デバッグの構成
先ほど設定した nucleo_test Debug
を選択し、デバッグを開始します。
ツールバーにあるデバッグボタンの▼からでも選択できます。
特に問題がなければコンパイル、OpenOCDの起動、書き込み、デバッグが行われます。
OpenOCDの起動には数秒の時間がかかります。
画面が切り替わり、コンソールにメッセージが出力されれば成功です。
コンソール出力
Hello ARM World!
System clock: 8000000Hz
Second 1
LEDが点滅しなければ、ポートの設定が異なっていることが予想されます。
データシートなどをよく確認してください。
その他
HSEの利用
Nucleo-F103RBにはHSEがついていません。
Nucleoボードを最大周波数で利用したい場合は、デバッガ側に付いている水晶を使用できます。
マニュアルに従ってボード裏面の抵抗を付け替える必要があります。
特に問題がなければHSIで48MHzくらいで動かしておけばよいでしょう。
HSEを利用する場合はこちらの記事が参考になります。
STM32 Nucleo ターゲットのHSEクロック取り扱いとデバッガホスト部からの供給
Nucleoボードの活用法
Nucleoボードはデバッガ(ST-LINK/V2-1)だけ切り離して使用することができます。
NucleoとかいうST-LinkをFRISKケースに入れる
以上です。