未分類

【LAUNCHXL】TI製LaunchPadを使ってLチカを行う方法を説明する

どうも、はじめまして。

今回はTexas Instruments 社が提供するマイコンボードである、LaunchPadの始め方(Lチカ)を調査してみました。

※本記事のマイコン画像はTIホームページからの引用になります

LauncXL、LanchPadとは?

TIが出しているマイコンが搭載された評価ボード的なラインナップの一つです。

搭載されているマイコンによってスペックが様々で、詳細は以下のTIホームページで確認できます。

組み込み向け開発:ハードウェアリソースキット

今回購入したのは「f28379d」というマイコンが搭載されたLAUNCHPADになります。

今回のマイコンは簡単に言うと、バチクソ計算能力が高い高速マイコンになります。

たとえばこのマイコンで通称Lチカをやることを例えると、”草野球に大谷”かもしれない。

今回のマイコンは三角関数演算ユニットをはじめとした計算に特化した周辺ハードウェアがたくさんあるので、複雑な制御を必要とする処理に使うこともできます。

色々モデルはあったんですが、個人で実験に使うレベルなのでなるべく簡単に使えるようにハイパワーなモデルを選びました。

マイコンが異なる場合でもサンプルプログラムの入手と実行手順は同じになると思います。

今回はそのあたりをまとめてみたいと思います。

LAUNCHPAD、LAUNCHXLを入手する方法

今回のマイコンは海外製です。

入手方法はいくつかありますが、おもにmouserなどの海外電子部品通販サイト、TI公式の2択になるかと思います。ボードを購入する

TIから直に個人輸入した場合

今回はTIから個人輸入してみました。

多少参考になると思うので載せてみます。

TI自体は日本に支社、というか支店があるっぽいのですが、今回は海外直送できました。結構でっかい段ボールに包まれてきました。

内容物は以下のような感じ。

・マイコン本体(静電防止袋つき)
・ユーザーガイド
・ピンアサインなどをメモした用紙
・USBケーブル

届いたら袋を開けて破損などがないかどうかチェックしておきましょう。

開発環境を整える

次に開発環境を整えます。

TI製のマイコンおよびLAUNCHPADにてデバッグを行う場合、TI社製の Code Composer Studio という環境を使います。通称CCSと呼ばれる開発環境で、Eclipse、というワークスペース環境をもとに作られているようです。

インストール手順、および日本語マニュアルは以下のサイトに記載がありました。

CCSのインストール手順について:Embedded Technology Lab.

Code Composer Studio ユーザーズマニュアル:PDF

ここでは環境整備ついては割愛します。

「マイコンに関する技術資料・サンプルプログラムの入手方法」、を手に入れる

次にマイコンに関する技術資料を手に入れます。

これがねぇ、、結構手間取りました。

というのも、マイコンの名前で検索しても、複数の方法でサンプルプロジェクト、スタートガイド等を手に入れる方法があるようで、どれが使えるやつなのかわからなかったんですよね。(結論としてはたぶん、全部使えるんだとは思うけど、、、)

今回はその1例ということで、CCSを操作して手に入れる方法を紹介します。

まずはCCSを起動します。

以下のようなウィンドウが出現した後、数秒でフォルダ選択の画面が現れます。

ここでは適当に、ドキュメントにフォルダを用意しておきました。

CCSにおいてはここで指定したフォルダが「ワークスペース」になります。

「Launch」をクリックすると以下のような画面になります。

ここで技術資料を手に入れます。

まず、「View」→「Resource Explorer」を開きます。

Resource explorerというのはCCSで取り扱うマイコンなどの情報を保存している場所で、いろんなマイコンの情報があります。

今回のLaunchPadはリアルタイム制御用のもので、「f28379D」というチップを積んでいますので、左のナビゲーションウィンドウからおなじ名前のものを探してクリックします。

フォルダを開くと中に以下のようなファイルがありますので、とりあえず全部開いてPDFとかでローカルに保存しておきます。

上から順に、
1:マイコンのガイド
2:リファレンスマニュアル
3:よくわからんシート
4:ファームウェアに関するガイド
5:ADCや各種通信のプログラムの記述などに関する説明
6:サンプルプロジェクトに関するガイド
7:IPCユーザーガイド

が入ってました。

とりあえず今はサンプルプログラムの使い方が欲しいので6の文書を開きました。

サンプルプログラムを手に入れる

次にサンプルプログラムを手れていきます。

このマイコンではArduinoなどとは違い、「Void loopに書き込めば動くぜ☆」なマイコンではないので、割り込み処理などの記述もすべて自分で行う必要があります。

が、それをいきなり新しいマイコンでやるのはだいぶハードルが高いので、TIがサンプルプログラムを用意してくれています。

いやぁ、助かったぜ、、、、(-_-;)

先ほどローカルにダウンロードしたPDFの内、Example Projects Quickstart Guideを開くと、上部に以下のような記載があります。

簡潔にまとめると、

C2000wareソフトウェア開発キットをインストールしたときのフォルダにサンプルが含まれてるのでそれを使ってね、ということです。

C2000は変更していなければCドライブ直下のtiのフォルダに入っているはずなので、以下のようなディレクトリになるはずです。

次に実際にサンプルプロジェクトをワークスペースにインポートしていきます。

File」ー>「Import」をクリックすると以下のようなウィンドウが開きます。

Import Project を選択するとインポートの方法選択画面が出ます。

今回はCCSのプロジェクトをインポートしたいので「CCS Projevts」を選択します。

次にサンプルプロジェクトが存在するディレクトリを指定します。

Select search-directory」にtiの下にあるフォルダを選択します。

ここでディレクトリの指定先が二つあります。

C:\ti\c2000\C2000Ware_\driverlib\f2837xd\examples\cpu1

② C:\ti\c2000\C2000Ware_\device_support\f2837xd\examples\cpu1

この2つの場所には基本的に同じサンプルプログラムが含まれますが、

①はインポート時にすべてのファイルがワークスペースを作成したフォルダにコピーされます。
②はインポート時にインクルードファイルを除いたファイルだけがワークスペースにコピーされます。

例えばLED点滅(Lチカ)のプログラムの場合以下のような違いがあります。

→アップデートですべて①の方へ移動するようショートカットが作成されていました。

今回は元のファイルはいじらずに保存しておきローカルで書き換えたりしたかったので、すべてのファイルをワークスペースにコピーする①を選択しました。

今Lチカをやりたいので、以下「led_blinky」のプロジェクトを選択し、「Finish」をクリックします。

※driverlib以下にあるプロジェクトは自動でコピーが行われます(自動でチェックが入りました)

Finishボタンをクリックすると読み込みが開始され、数秒で終了します。

終了したら上部ののタブから「View」- >「Project Explorer」を選択します。

すると以下のようにインポートしたフォルダ内のファイル(と読み込んだ覚えがないファイル)が表示されます。

ファイルのアイコンにバツ印(見ればわかる赤い矢印)が付いていなければ、正しくインポート作業完了です。

インポートをおこなったサンプルを実行してみる

次に読み込んだプロジェクトを実際にマイコンに書き込んでみようと思います。

マイコンボードを付属のUSBケーブルでPCに接続します。

待機時のマイコンの状態確認

すでにOut of Box Demo といって、サンプルのプログラムがすでに書き込まれているらしいのですが、USBを接続した直後は以下のように点灯しました。

電源投入直後に赤青黄のLEDが数秒間点滅した後、以下のような状態に切り替わりました。(結構まぶしい)

待機状態では特に熱くなるとかはありませんでした。
(これ以前に不良品を引いて破壊しました。つないだだけで60度ぐらいになったら不良品である確率が高いです。)

※ジャンパがありますが、これは出力側のモジュールに電源を供給しているものです。ないとLEDは点灯しません。
 通信側と絶縁させたい場合、このジャンパを外して個別に絶縁電源を用意してやればOKです。

CCSでプログラムのコンパイル・デバッグを行ってみる

プログラムを書き込む

CCS上でのプログラムのコンパイル、デバッグ方法についてまとめておこうと思います。

プログラムのデバッグは、上部にある緑色の虫のようなマークをクリックします。

クリックすると以下のようなメモリの初期化、プログラムの書き込みに関する進捗ウィンドウが表れます。

エラーを示すポップウィンドウがでたり、コンソールにエラーメッセージが出たりしなければ特に問題ありません。

デバッグはこの内容なら数秒で終わるかと思います。

ワークスペースの説明とセットアップ

ここからはマイコンによって変わりますが、一例としてリアルタイム制御用マイコンでデバッグを行うケースを説明してみます。

上部のViewタブから好きなウィンドウを選択することができます。今回は以下のような感じに設定してみました。

簡単な説明も載せておきます。

上記の画像で表示させているものはどれも必須のかもしれませんが、お好みで消したり追加したりできます。配置も自由に調節できます。

ワークスペース自体の情報も保存されるので、次回以降は開いていたウィンドウも出現します。

プログラムを実行してみる

次にプログラムの実行をします。その前にいったん上部のタブを確認してみます。

先ほどとは異なり、上部のタブが少し変化しているのが分かります。

①デバッグ前、②実行前、③実行中で表示が変化します。よく使うボタンと役割は以下のような感じです。

緑色の矢印ボタンをクリックすれば、プログラムがマイコン上で実行されます。

ターゲット・コンフィグレーションを行う

上記までで情報の取得、サンプルプログラムのインポート、サンプルプログラムの書き込み準備ができました。

しかし、実行ボタンをおすと以下のようなウィンドウが出現します。

翻訳すると以下のような感じ。

「デバッグセッションを開始するには、ターゲットコンフィギュレーションが必要です。ターゲット設定ファイルを新規に作成し、エディターで開きますか?」

デバッグ対象のマイコンを選択し忘れていました。

CCSにてデバッグする対象はたくさんあるわけですが、今回のプロジェクトではまだ対象のマイコンを決めて(選択して)いません。

Yesをクリックして設定を行います。

ターゲット・コンフィグのファイルはサンプルからコピーしてきた場所に「.ccxml」ファイルとして保存されます。

特に変える必要もないのでそのままFisnishをクリックします。

ファイルの作成が完了すると以下のようなウィンドウが出てきます。

ここで購入したマイコン、または評価ボードに搭載されているマイコンの名前にチェックを入れます。

今回僕が購入したLAUNCHXCELにはTMS320F28379Dがというマイコン載っているので、これにチェックを入れました。

続いてマイコンへの接続方法を選択します。

マイコン名を一覧の上にConnectionというドロップダウンリストがあるので、この中から選択します。

LAUNCHXCEL f28379Dではマイコンボード上にXDS100v2というデバッグ素子が付いています。

それっぽい名前のものがあるので、選択して確定します。

▲マイコンボードを確認してみると、XDS100v2と書かれている

再度緑色の無視マークを押してデバッグを行う

設定が完了したので、再度デバッグ・書き込みを行ってみます。

先ほどと同じく緑色の虫マークをクリックします。

今回の場合、以下のようなウィンドウが表れました。

どのCPUに書き込みますかという案内について書かれています。

今回のようにマイコン名の最後にDが付くモデルはCPUが二つ搭載されたマイコンになります。

2つに同じプログラムを書き込む必要性はあまりないので今回はCPU1だけを選択します。

プログラムを実行してみる

デバッグと書き込みが完了すると以下のようなウィンドウに切り替わります。

無事書き込みはできたようなので、再生ボタンに似たボタンを押してプログラムの実行を開始します。

再度実行!

今回利用したled_blinkyでは以下のような動作を確認することができました。

問題なさそうです。

プログラムの内容をざっとみてみる

せっかくサンプルをローカルにコピーしたので、内容を簡単に確認していきたいと思います。

サンプルプログラムの利用規約

はじめに公開されているサンプルコードの利用規約などを確認してみます。

今回のデモで使用したコードはTIが提供するソースコードであり、TIが作成したということを明記した上での使用は認められています。

著作権は放棄しないけど、明記すれば使用できます、という感じ。

。ソースコード中に記載された文章は以下の通りです。

//#############################################################################
// $TI Release: F2837xD Support Library v3.12.00.00 $
// $Release Date: Fri Feb 12 19:03:23 IST 2021 $
// $Copyright:
// Copyright (C) 2013-2021 Texas Instruments Incorporated - http://www.ti.com/
//
// Redistribution and use in source and binary forms, with or without 
// modification, are permitted provided that the following conditions 
// are met:
// 
//   Redistributions of source code must retain the above copyright 
//   notice, this list of conditions and the following disclaimer.
// 
//   Redistributions in binary form must reproduce the above copyright
//   notice, this list of conditions and the following disclaimer in the 
//   documentation and/or other materials provided with the   
//   distribution.
// 
//   Neither the name of Texas Instruments Incorporated nor the names of
//   its contributors may be used to endorse or promote products derived
//   from this software without specific prior written permission.
// 
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// $
//#############################################################################

日本語に翻訳すると以下のような感じ。

//#############################################################################
// $TI Release: F2837xD サポートライブラリ v3.12.00.00 $STD
// $Release Date: Fri Feb 12 19:03:23 IST 2021 $
// $Copyright:
// Copyright (C) 2013-2021 Texas Instruments Incorporated - http://www.ti.com/.
//
// 本書の内容は、予告なく変更することがあります。
// このファイルは、次の条件を満たす場合に限り、再配布および使用することができます。
// 以下の条件を満たす場合に限り、ソースおよびバイナリ形式の再配布および使用が許可されます。
// 
// このような場合、「Ctrl + C」キーを押してください。
// このような場合、「CONTACT」ボタンをクリックしてください。
// 
// バイナリ形式で再配布する場合は、上記の著作権表示、この条件一覧、および以下の免責事項を再現する必要があります。
// バイナリ形式で再配布する場合は、上記の著作権表示、この条件一覧、および以下の免責事項を、バイナリ形式で提供される文書および/またはその他の資料で再現する必要があります。
// バイナリ形式で再配布する場合は、上記の著作権表示、本条件一覧、および以下の免責事項を   
バイナリ形式の再配布は、上記の著作権表示、この条件一覧、および以下の免責事項を、 // ドキュメントおよび/または配布物とともに提供されるその他の資料で再現しなければなりません。
// 
// このような場合、以下のようになります。
// このソフトウェアを使用した製品を推奨または販売促進するために、Texas Instruments Incorporated の名前およびその貢献者の名前を使用することは、書面による特別な事前の許可なしに禁止されています。
// このソフトウェアは、事前に書面による特別な許可を得ることなく、Texas Instruments Incorporated およびその貢献者の名前を、このソフトウェアから派生した製品の推奨または販売促進のために使用してはなりません。
// 
// 本ソフトウェアは、著作権者および貢献者によって提供されています。
// このソフトウェアは、著作権所有者および貢献者によって「現状のまま」提供され、いかなる明示または黙示の保証(以下を含むが、これに限定されない)も行われません。
本ソフトウェアは、著作権所有者および貢献者によって // 「現状のまま」提供されます。
本ソフトウェアは、著作権所有者および貢献者によって // 「現状のまま」提供されます。いかなる場合においても、著作権者または貢献者は 
// また、著作権者または貢献者は、いかなる場合においても、直接的、間接的、偶発的、特別、例示的、または結果的な損害について責任を負いません。
// 著作権所有者または貢献者は、いかなる場合も、直接的、間接的、特別、例示的、または結果的な損害(代用品の調達を含むが、これに限定されない。
// 代用品またはサービスの調達、使用、データ、または利益の損失、またはビジネス上の損失。
// を含むがこれに限定されない)に対して責任を負いません。
契約、厳格責任、または不法行為のいずれであっても、// 責任の理論 
本ソフトウェアの使用から発生する、契約、厳格責任、または不法行為(過失またはその他を含む) // にかかわらず、どのような原因、どのような責任論であっても。
// 本ソフトウェアの使用に起因する損害の可能性について知らされていた場合であっても。
// $
//#############################################################################c

自分の商品を売るために「俺TIに認証されてんだぜ!」とか広告したり、自作発言しなければ、共用してOKということやな。

ソースコードの中身をみていく

今回使用したLチカのサンプルコードは以下の通りです。

// Included Files
//
#include "driverlib.h"
#include "device.h"

//
// Defines
//
# define LOOP_COUNT 10

//
// Main
//
void main(void)
{
    //
    // Initialize device clock and peripherals
    //
    Device_init();

    //
    // Initialize GPIO and configure the GPIO pin as a push-pull output
    //
    Device_initGPIO();
    GPIO_setPadConfig(DEVICE_GPIO_PIN_LED1, GPIO_PIN_TYPE_STD);
    GPIO_setDirectionMode(DEVICE_GPIO_PIN_LED1, GPIO_DIR_MODE_OUT);

    //
    // Initialize PIE and clear PIE registers. Disables CPU interrupts.
    //
    Interrupt_initModule();

    //
    // Initialize the PIE vector table with pointers to the shell Interrupt
    // Service Routines (ISR).
    //
    Interrupt_initVectorTable();

    //
    // Enable Global Interrupt (INTM) and realtime interrupt (DBGM)
    //
    EINT;
    ERTM;

    //
    // Loop Forever
    //
    for(;;)
    {
        //
        // Turn on LED
        //
        GPIO_writePin(DEVICE_GPIO_PIN_LED1, 0);

        //
        // Delay for a bit.
        //
        DEVICE_DELAY_US(500000);

        //
        // Turn off LED
        //
        GPIO_writePin(DEVICE_GPIO_PIN_LED1, 1);

        //
        // Delay for a bit.
        //
        DEVICE_DELAY_US(500000);
    }
}

//
// End of File
//

CCSでは「Ctrl + 右クリック」をすることで、インクルードされたファイルや変数の中身までアクセスできます。

これを使っていろいろ見てみようと思います。

2つのインクルードファイル:driverlib.hとdevice.h

以下の二つがincludeされていました。

#include "driverlib.h"
#include "device.h"

2つの内容は以下のようになっています。

●driverlib.h について

EPWM、EQEP等の各種機能へアクセスするためのヘッダファイルをまとめたヘッダファイルになってる

●device.h について

各種GPIOの設定や変数が何を指しているのかをまとめたファイルになってる。

#define定義で、わかりやすい名前でGPIO機能を使用できるようになっています。

ここではLED1のGPIOピンの定義は直接レジスタ指定で、それ以外はされに別の”pinmap.h”というファイルで定義したものを使用する、という感じでした。

すこしわかりにくいなぁと思ったんですが、どうやらpinmapの方で”チップとして決まっている入出力の設定”を、Launcpad上に合わせて再度定義したのが"device.h"という感じみたいです。多分。

マイコン上では一つのピンで複数の機能を兼用しているものもあるので、LAUNCHXCELというボード上で競合がないように一度マイコンチップの機能を決め、それをされにdevice.hで再定義している、、、という感じなのかも。違うボードやマイコンになっても共用したいがための工夫かもしれない。

確認するときはdevice.h以上掘り下げてみていく必要はあまりないかと思います。

Device_init();

main関数で最初に定義されてる関数でした。

中身を見ましたが、マイコン上のペリフェラルを有効化するコードが並んでました。

量が多いんで必要なとこしか見てませんが、EPWMの出力を許可する・しない、とか、AD変換を有効にするか、とかでした。たぶん。

CCSにおいては、「Ctrl」+「右クリック」を行うことにより、変数や関数を定義した箇所へジャンプすることができます。

Device_initGPIO();

この関数ではGPIOの初期設定が行われていました。

GPIO_setPadConfig(DEVICE_GPIO_PIN_LED1, GPIO_PIN_TYPE_STD);

ここでは指定されたポートの設定を行っていました。

レジスタに数値を直打ちするわけではなく、以下のように定義された変数を使って設定できるらしい。

比較的わかりやすいと思います。

GPIO_setDirectionMode(DEVICE_GPIO_PIN_LED1,GPIO_DIR_MODE_OUT);

ここではGPIOピンの使用モードを設定していました。

Arduinoで言うならたぶんpinMode(1, OUTPUT)、になると思います。(1ピンを出力として使う、という設定)

設定項目は以下の2つになっていました。

INとOUTの2択で出力設定をできるみたい。今回はLEDなのでOUTになっていました。

Interrupt_initModule();

割り込み処理に必要な周辺モジュールの初期化を行っています。

Interrupt_initVectorTable();

割り込みベクタの初期化を行う関数です。

詳しく見てないけど優先順位指定フラグ以外で順序変更とかもできるのかも?

EINT;

割り込みを許可する関数になります。

ERTM;

リアルタイムデバッグ割り込み、なるものを許可している関数になります。

詳細は覗けないんだけど、多分expressions等でリアルタイムに変数を変更したりできるから、その辺の割り込みを許可するためのものだと思います。リアルタイム制御用マイコン特有化と思います。

以下、forループ内部

これ以降はfor文の内容に触れていきます。

GPIO_writePin(DEVICE_GPIO_PIN_LED1,0);

GPIOの出力を直接読み書きできる関数です。

ベースとなるアドレスが設定されており、引数にdefine定義された数値を渡すことで対象のレジスタへアクセスするようになっています。

直接GPIOをたたくことはあまりないようで、このほかにも結構な数の関数が用意されいました。

DEVICE_DELAY_US(500000);

usec刻みでの待機時間を設ける関数です。

Ctrl+クリックで元までたどっていくとインライン関数の定義にたどり着きます。

いま500,000usecが渡されているので、0.5secの待ち時間を設けていることになります。

DEVICE_SYSCLK_FREQは別の場所で定義した数値なので、特にいじらなくても待機時間は生成できそうです。

#define DEVICE_DELAY_US(x) SysCtl_delay \
(((  ((long double)(x)) / (1000000.0L / (long double)DEVICE_SYSCLK_FREQ)) - 9.0L) / 5.0L)

せっかくなので少し内容をみてみます。分数表記にすると以下のようなかんじになります。

$$
\rm{
\left(
\frac{ (long\ double)(x) }
{ \frac{1000,000}{(long\ double)DEVICE\_SYSCLK\_FREQ} } - 9.0
\right)
\times
\frac{1}{5}
}
$$

ざっと見た感じ、main関数のループを何サイクル待機するのかを直接指定する関数 ”SysCtl_delay”を、usec指定できるように新しい定義を用意しているようです。

ただこの関数を読んだ時点で9サイクル確定で必要になる+1度呼び出すごとに5サイクル必要になるようで、この文の計算がちょこちょこっとしてあるようです。

実際の数値でも考えてみたいと思います。

・500,000usecを引数で渡したとすると、これを1,000,000で割るので、0.5となる。
・これをさらに"DEVICE_SYSCLK_FREQ"で割る。

いま"DEVICE_SYSCLK_FREQ"は、

#define DEVICE_OSCSRC_FREQ          20,000,000U
#define DEVICE_SYSCLK_FREQ          ((DEVICE_OSCSRC_FREQ * 20 * 1) / 2)

となっているので、20[MHz]を20倍して2で割ったもので割る、つまり200[MHz]に割る。
(1サイクルあたりの時間は5[nsec]ということになる)

少し見にくいので書き直すと、

$$
\left(
\frac{ (long\ double)(x) }{1,000,000}
\times{(long\ double)DEVICE\_SYSCLK\_FREQ } - 9.0
\right)
\times
\frac{1}{5}
$$

という感じです。

usecで読み込んだ引数を1[MHz]で割ると割合で0.5、それに200MHzかければ100MHzになる。
つまり、200MHzでは1サイクルで5[nsec]なので、それを100M倍すれば、0.5になるというわけか。。。。

ただこ待機関数では前述した注意点があり、これらを消すために以下のように、
・"SyCtl_dely”という関数自体を読み込んだ時点で9サイクルデフォルトでかかるので、待ちたいサイクル数から9を引いている。
・この関数内で1サイクル待機するごとに5サイクル消費するので引数として渡したサイクル数の5倍待機することから5で割っている。

という処理をしているわけか、、、。。。

ちょっとめんどくさい。。。。

基本的にはDEVICE_SYSCLK_FREQさえ正しく設定すれば正確な待機時間を生成することができると思います。

GPIO_writePin(DEVICE_GPIO_PIN_LED1, 1);

先ほどと同じ関数で、今度はGPIO出力に1を設定してLEDを点灯させています。

DEVICE_DELAY_US(500000);

この関数で再度0.5[sec]点灯状態を待機します。

プログラムの内容まとめ

一通り読んでみたけど、今回のサンプルプログラムの内容としては、

1.デバイスの設定を行う
2.GPIOのコンフィグ(マイコンのハード)、GPIOのコンフィグ(LauncPad仕様)、各種設定
3.main関数を200[MHz]で呼び出すように設定
4.main関数内のforループで、「LED消灯➡0.5sec待機➡LED点灯➡0.5sec待機」

って感じですね。

内容も結構わかりやすくてよかったと思います。

まとめ

今回はLAUNCPADのでLチカを行ってみるために必要になりそうな内容についてまとめてみました。

実際にやった内容をまとめると以下のような感じになると思います。

・開封
・CCSの設定や使い方等
・サンプルプログラムの入手方法の確認
・Lチカのプログラムの書き込みテストとその内容確認

多少でも参考になれれば幸いです。

それでは、また。

-未分類
-,