mbed SDKはSTM32 Discoveryシリーズをサポート

mbed SDKは、STM32 Discoveryシリーズもサポートしている。
mbedのクラウド開発環境ではSTM32 Discoveryシリーズをサポートしてないので開発はできないが、ローカルでgcc-armならコンパイルできるのだ。

RTCクロック

早速何かを作ってみた。インストールなど詳しくはSTM32 Discoveryシリーズをインポートされたマイコン風雲録さんのmbed-sdkを使ったコマンドライン・コンパイル方法を読んでもらいたいのだが、当方はSTM32VLDに秋月の小型I2C LCD(AQM0802)を繋いでRTCクロックだ。

mbedでSTM32VLDを駆動

mbedでSTM32VLDを駆動

main.cppのソースは以下のとおりだ。

#include "mbed.h"
#include "AQM0802.h"

I2C i2c(PB9, PB8);  // sda, scl
AQM0802 lcd(&i2c);  // i2c

/**
 * Display a splash screen.
 */
void splash(void)
{
    lcd.cls();
    lcd.locate(0, 0);
    lcd.printf("STM32VLD");
    lcd.locate(0, 1);
    lcd.printf("mbed");
    wait(3);
}

int main()
{

    struct tm *date;
    // setup time structure for Thu, 5 May 2011 10:00:00
    struct tm t;
    char str[256];

    /*
     * Splash.
     */
    splash();

    t.tm_sec = 00;    // 0-59
    t.tm_min = 17;    // 0-59
    t.tm_hour = 17;   // 0-23
    t.tm_mday = 25;   // 1-31
    t.tm_mon = 4;     // 0-11
    t.tm_year = 114;  // year since 1900

    time_t seconds = mktime(&t);
    printf("Time as seconds since January 1, 1970 = %d\n", seconds);
    set_time(seconds);

    //Read RTC Data
    while(1)
    {
        seconds = time(NULL);
        date = localtime(&seconds);    /* 経過時間を時間を表す構造体 date に変換 */

        strftime(str, 255, "%Y/%m/%d (%a) %p %I:%M:%S", date);
        printf("Time as a string = %s\n", str);

        lcd.cls();
        strftime(str, 255, "%y/%m/%d", date);
        lcd.locate(0, 0);
        lcd.printf("%s", str);
        strftime(str, 255, "%H:%M:%S", date);
        lcd.locate(0, 1);
        lcd.printf("%s", str);
        wait(1);
    }
}

STM32VLDをgccでコンパイルするスキルのある方なら簡単に開発できるだろう。

取りあえずソースを公開

ソースはこれだ。遊んでくれ。
STM32VLDのmbedテストソース"STM32VLDのmbedテストソース"をダウンロード