LoginSignup
17
20

More than 5 years have passed since last update.

stm32の開発環境構築

Last updated at Posted at 2017-05-02

背景

STM32の開発環境構築(無償でなんとかなる範囲)でずっと悩んでいました。

mbedはオンラインでの開発が前提のため、ネットワークの関係でアクセスできない環境&デバッガを使用できないのでNG。(自分がmbedでデバッガを使用する方法を知らないだけかもしれませんが…)
EclipseにARMのToolChainを入れて、OpenOCDと連携させようとしても上手くいかない。。

色々と試して、ようやく開発環境ができたのでメモ。

環境

OS:Windows10 64bit

ソフト

ソフト名:Sytem Workbench for STM32
URL:www.st.com
Eclipseベースの統合開発環境です。

参考サイト

参考にしたサイトは以下。
開発環境構築
 http://yuqlid.hatenablog.com/entry/2016/06/13/004001
OpenSTMの日本語化
 http://d.hatena.ne.jp/replication/20150703/1435928324

手順

(1) インストール
以下のサイトにアクセス。
 http://www.openstm32.org/HomePage

ユーザ登録後に、環境に合うインストーラをダウンロード。Windows10用はないが、ひとまずWindows7用で動作する模様。
ファイル:install_sw4stm32_win_64bits-v1.14.0.exe

System WorkbenchはEclipseベースのソフトなので、Javaのランタイムが必要。インストールされてない場合はSystem Workbenchのインストール最中にDLサイトに誘導してくれるのでJREをインストール。

(2) System Workbenchの日本語化
前述の通り、System WorkbenchはEclipseベースのソフトなのでPleiades適用で日本語化が可能。以下のサイトからダウンロードし、readmeの記載内容に従って適用する。(readmeを読めば分かる程度の簡単な手順なので詳細は割愛。)

Pleiadesダウンロードサイト
 http://mergedoc.osdn.jp/

(3) ST-LINK/V2-1のインストール
ST-LINK/V2-1のUSBドライバが必要なため、インストールされていなければ以下からダウンロードしてインストールする。
http://www.st.com/ja/embedded-software/stsw-link009.html

(4) プロジェクト作成
System Workbenchを起動。
初回起動はworkspaceをどこにするか聞いてくるので適当に指定(自分の場合はC:\Ac6\work)。

・「ファイル」→「新規」→「Cプロジェクト or C++プロジェクト」を選択。
プロジェクト名:適当に設定
プロジェクトタイプ:Ac6 STM32 MCU Project
ツールチェーン:Ac6 STM32 MCU GCC
 「次へ」を選択。

・構成の選択で、Debug,Releaseを選択。
自分の場合はReleaseはしばらく使用予定ないのでDebugのみ選択。
 「次へ」を選択。

・MCUのコンフィグレーションを選択。
使用するチップを選択。公式に出ている開発ボードであればドロップダウンリストから選択。

今回使用する基板はNucleoのstm32f411reなので、以下の通り選択。
系列:STM32F4
Board:STM32F411RE

・ファームウェアを選択
以下の3つから選択する。
1. No firmware
2. Standard Peripheral Library(StdPeriph)
3. Hardware Abstraction Layer(Cube HAL)

2,3のどちらも最初はインターネットからファームウェアをPCにダウンロードするため少々時間がかかる。
以上でプロジェクト作成は完了。

参考までに。
3のCube HALはペリフェラルの抽象化を行い、移植性向上を狙ったドライバ。ペリフェラルの抽象化をしているだけあり、シンプルな使用方法では使いやすい。
さらにRTOSやUSB,TCP/IPのミドルウェアを追加したのがCubeMXという話っぽいです。(間違っていれば指摘お願いします) CubeMXの話は、コメントに@mt08さんの詳細解説があるので参照。

2のStdPeriphはペリフェラルを直接使用するドライバのみの提供。リファレンスマニュアルとドライバを見ながら実装するイメージ。

動作確認

一定間隔でユーザLEDを点滅させ、デバッガで様子をみる。

(1) プロジェクトのファームウェアはStdPeriphで作成。Nucleoのstm32f411reは、ユーザLEDがPA5に接続されていることに気を付けてコーディングする。

main.c
#include "stm32f4xx.h"
#include "stm32f4xx_gpio.h"

int main(void)
{
    //GPIOにクロック供給
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);

    //GPIOの設定
    GPIO_InitTypeDef pin_PA5;
    pin_PA5.GPIO_Pin = GPIO_Pin_5;
    pin_PA5.GPIO_Mode = GPIO_Mode_OUT;
    pin_PA5.GPIO_OType = GPIO_OType_PP;
    pin_PA5.GPIO_PuPd = GPIO_PuPd_DOWN;

    //GPIOの初期化
    GPIO_Init(GPIOA, &pin_PA5);

    for(;;){
        double i=0;
        while(1){
            i = i +1;
            if(i>100000){
                break;
            }
        }
        GPIO_ToggleBits(GPIOA,GPIO_Pin_5);
    }
}

(2) 「プロジェクト」→「プロジェクトのビルド」
(3) 「実行」→「デバッグの構成」
 ・Ac6 STM32 Debuggingを右クリックし「新規」を選択。
 ・分かりやすい名前を付けて「デバッグ」を押下。
(4) デバッグが開始される
 main関数の先頭で自動的にbreakされるので、「再開」ボタンを押して再開する。適当な箇所にbreak pointを設定し、breakされるか確認する。

以上で、stm32の開発環境構築は終わりです。

17
20
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
20