株式会社インデペンデンスシステムズ横浜

システム開発エンジニアの西田五郎が運営しております。新規開発案件のご依頼をお待ちしております。

*

Tiva C EK-TM4C123GXL(その6) Initialization と GPIO

      2014/04/05

Tiva C EK-TM4C123GXLを使ってみるの6回目です。やっと今回から本題のプログラミングです。

前回まででEWARMでTiva C用の新規プロジェクトが作成出来たとしてそのプロジェクトでプログラムを作っていきます。

以下のメーカのサイトを見ながらプログラムを作っていきます。
Getting Started with the TIVA™ C Series TM4C123G LaunchPad

更に、このサイトで下の方の、Workshop MaterialのThe workbookを見ながら作ります。
直接のPDFファイルへのリンクは、The workbook PDF です。

まずは、このThe workbookの、Lab 3: Initialization and GPIO のプログラムをそのまま書いてみます。文書では、開発環境は、Code Composer Studio ですが、ここでは今まで通り、EWARM(ARM用 IAR Embedded Workbench)を使います。処理内容はとりあえずのLチカです。ボード上のLEDの点滅です。

全体のプログラムは以下です。コメントは私が付けましたので参考程度に見て下さい。
プロジェクト一式はここからダウンロード出来ます。

ここで、注意点ですが、TivaWare付属のサンプルプログラム等を見ていると、ROM_ で始まっている関数をよく見かけますが、ROM_ の方は、ROM内蔵版です。こちらを使うとプログラム全体の大きさが小さくなりますが、ここでは特にサイズを気にする程でもないので、普通にリンクして使う、ROM_ が付いていない通常版の関数を使います。

//C99 standardの型を使うため
#include <stdint.h>
#include <stdbool.h>

//ペリフェラルドライバを使うための include ファイル
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"

//pinデータ
uint8_t ui8PinData=2;

int main(void)
{
    //システムクロックの設定(これで結果的に40MHz)
    SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);

    //ポートへのクロック供給(必須)
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);

    //GPIOの出力への方向設定
    GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);

    while(1)
    {
        //LED ON
        GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1| GPIO_PIN_2| GPIO_PIN_3, ui8PinData);
        SysCtlDelay(2000000);

        //LED OFF
        GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, 0x00);
        SysCtlDelay(2000000);

        //色を順番に変化
        if(ui8PinData==8){
            ui8PinData=2;
        }
        else{
            ui8PinData=ui8PinData*2;
        }
    }
}

ここでの、ポイントは、Initialization(初期化)とGPIOということなので、そこに注目します。詳細は元の文書を参照して下さい。必ずしも私の理解が正しいとは保証出来ませんのでご了承下さい。また各関数のマニュアルは、TivaWare™ Peripheral Driver Library USER’S GUIDE というのが、TivaWareに付属していますので、詳細はそちらを参照して下さい。

クロックの初期化
SysCtlClockSet()でシステムクロックを初期化します。Tiva C にはいくつかのクロック供給源があるのですが、それらをどのように組み合わせてシステムクロックとするかの設定です。

ここでは、分周を5、PLL(Phase Locked Loop:位相同期回路)を使用する、16MHzのCrystalを使用、メインオシレータを使用するという設定のようです。
結果システムクロックとして、40MHzになります。どういう結果で、40MHzになるかというと、メインオシレータとPLLを使用すると400MHzになるのですが、デフォルトで200Mhzに分周され、さらに5で分周するので、結果的に40MHzということです。

ポートへのクロックの供給
SysCtlPeripheralEnable()で今回使うポートにクロックを供給します。省電力設計なので、必ず必要に応じて有効化しないと動作しません。

GPIOの出力への設定
今回は、ボード上のLEDを使います。ボード上のLEDは以下のように接続されています。
PF1 LED赤
PF2 LED青
PF3 LED緑
GPIOPinTypeGPIOOutput()で出力に設定します。

以上で、初期化完了です。あとは、While()ループ内で、順番に点滅させています。

今回はここまでです。次回は、ボード上のスイッチを使ってみます。

tivac

 - Tiva C, 使ってみた

AdSense

AdSense

  関連記事

no image
Tiva C EK-TM4C123GXL(その5)EWARMでTiva C 用プロジェクト作成

Tiva C EK-TM4C123GXLを使ってみるの5回目です。前回は、メーカ …

no image
Microsoft AzureでSQL DBを使ってみる(その1)概要とASP.NETサイトの作成

以下の投稿で、Microsoft AzureでASP.NETサイトを公開してみま …

no image
Tiva C EK-TM4C123GXL(その2)開発環境

Tiva C EK-TM4C123GXLを使ってみるの2回目です。 前回は起動確 …

no image
Tiva C EK-TM4C123GXL(その10) UART通信でのデバッグ

Tiva C EK-TM4C123GXLを使ってみるの10回目です。今回は、UA …

Raspberry Piをモニターとキーボードなしで導入する(その1)SSHでのログインまで

Raspberry Piをモニターとキーボードなしで導入する方法についてです。 …

3Dプリンターを使ってみた(その2)AutoDesk 123D Creature導入

3Dプリンターを使ってみたの2回目です。前回は私が3Dプリンターに関して今までや …

no image
Tiva C EK-TM4C123GXL(その9) UART通信

Tiva C EK-TM4C123GXLを使ってみるの9回目です。前回は、タイマ …

no image
Tiva C EK-TM4C123GXL(その7) ボード上のスイッチを使う

Tiva C EK-TM4C123GXLを使ってみるの7回目です。 前回の続きで …

no image
Microsoft AzureでASP.NETサイトを公開してみる(その1)概要と開発環境

Microsoft Azureのサイト上で、ローカル環境で開発したASP.NET …

no image
Tiva C EK-TM4C123GXL(その11) ADコンバータ

Tiva C EK-TM4C123GXLを使ってみるの11回目です。前回は、UA …