フォト
2017年6月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  
無料ブログはココログ

« LED electronic display | トップページ | Arduino IDEでのchar型の変数の振舞 »

2017年3月30日 (木)

次はSTM32ボードを積極的に使ていきたい(12)

Bule Pillボード(STM32F103C8T6)の内部RTCを使った時刻表示

スケッチ

//
// FILE: stm_RTC_sample.ino
// Arduino STM32 内部RTCを利用して時刻を表示する
// 作成日 2017/03/30 by たま吉さん
//

#include <RTClock.h>
#include <time.h>

RTClock rtc(RTCSEL_LSE);
char *wday[] = {"Sun","Mon","Tue","Wed","Thr","Fri","Sat"};

// セットアップ
void setup() {
  struct tm t;  
  Serial.begin(115200);
     while (!Serial.isConnected()) delay(100);

  t.tm_isdst = 0;             // サーマータイム [1:あり 、0:なし]
  t.tm_year  = 2017-1900;     // 年   [1900からの経過年数]
  t.tm_mon   = 3-1;           // 月   [0-11] 0から始まることに注意
  t.tm_mday  = 30;            // 日   [1-31]
  t.tm_wday  = 4;             // 曜日 [0:日 1:月 2:火 3:水 4:木 5:金 6:土]
  t.tm_hour  = 22;            // 時   [0-23]
  t.tm_min   = 10;            // 分   [0-59]  
  t.tm_sec   = 0;             // 秒   [0-61] うるう秒考慮
  rtc.setTime(&t); // 時刻の設定
}

void loop() {
   time_t tt; 
   struct tm* st;
   char str[64];

   tt = rtc.getTime();   // 時刻取得
   st = localtime(&tt);  // 時刻型変換
    
   sprintf(str, "%04d/%02d/%02d [%s] %02d:%02d:%02d",
      st->tm_year+1900,   // 西暦年
      st->tm_mon+1,       // 月
      st->tm_mday,        // 日
      wday[st->tm_wday],  // 曜日
      st->tm_hour,        // 時
      st->tm_min,         // 分
      st->tm_sec          // 秒
   );
   Serial.println(str);
   delay(1000);
}

実行結果

01


Blue Pillボードでは動作しますが、Black Pillボードでは動作しませんでした。
動かすとフリーズします。


2017/04/01 追記

Black Pillボードでも動作するようです。
SNSにて上記プログラムが動作することを確認して頂きました。
私の持っているBlack Pillボードが調子悪い(不良)みたです。


« LED electronic display | トップページ | Arduino IDEでのchar型の変数の振舞 »

arduino」カテゴリの記事

ARM」カテゴリの記事

STM32」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/571408/65086972

この記事へのトラックバック一覧です: 次はSTM32ボードを積極的に使ていきたい(12):

« LED electronic display | トップページ | Arduino IDEでのchar型の変数の振舞 »