SeeedJP STM32 Boards v1.3リリース

Seeed K.K.の松岡です。
Seeed K.K.が提供しているArduinoプラットフォームのSeeed JP STM32 Boardsをv1.2からv1.3にアップデートしました。v1.2が7/28リリースなので、約3か月ぶり。
さて、何が変更になったのでしょうか?

f:id:matsujirushix:20191114111013p:plain

v1.2 -> v1.3 変更点

  • Arduino Core STM32 v1.7をマージ
    • CMSIS v5.5.1
    • HAL v1.7.6
    • GCC v8.2.1
    • HardwareTimerクラスが追加

Arduino Core STM32 v1.7をマージ

Seeed JP STM32 Boardsの元となる、Arduino Core STM32をv1.4相当からv1.7にしました。

ライブラリやツールが、

  • CMSIS がv5.3.0 から v5.5.1 に、
  • HALが v1.7.4 から v1.7.6 に、
  • GCC が 6-2017-q2-update から 8.2.1 に、

バージョンアップしています。
GCCがバージョンアップしたことで、エラーメッセージの表示が分かりやすく、少しリッチになりました。

さらに、HardwareTimerクラスが追加されました。
このクラスを使うことで、正確な時間に定期的に関数を実行(コールバック)することができるようになりました。

GCC v8.2.1

たとえば、PowerSupplyLTE(true)の後ろのセミコロンを入れ忘れていると、次のメッセージが表示されます。
左が旧バージョン、右が新バージョン。入力モレの位置を表示しています。

f:id:matsujirushix:20191114115837p:plain

関数名を間違えたときは、関数の場所にリコメンドを表示しています。

f:id:matsujirushix:20191114120419p:plain

RedHat Developer Blogにいくつか例があるので、興味のある方はどうぞ。

developers.redhat.com

HardwareTimer

いままで、Seeed JP STM32 Boardsには、マイコン内蔵のタイマーを利用するクラスが用意されていませんでしたが、今回、追加されました。

Arduino Core STM32からは、まだドキュメントは提供されていませんが、サンプルコードが公開されています。

github.com

Timebase_callback.inoを参考に、Wio LTE Cat.1で1秒周期にブザーを鳴らしてみました。

#include <WioLTEforArduino.h>

#define BUZZER_PIN      (WIO_D38)

HardwareTimer Timer1(TIM1);

void TimerHandler(HardwareTimer* timer)
{
  digitalWrite(BUZZER_PIN, digitalRead(BUZZER_PIN) ? LOW : HIGH);
}
    
void setup()
{
  pinMode(BUZZER_PIN, OUTPUT);
  
  Timer1.setMode(2, TIMER_OUTPUT_COMPARE);
  Timer1.setOverflow(500000, MICROSEC_FORMAT); // 500[msec.]
  Timer1.attachInterrupt(TimerHandler);
  Timer1.resume();
}

void loop()
{
}

変更履歴

日付 変更者 変更内容
2019/11/14 松岡 作成