Seeed K.K.の松岡です。
Seeed K.K.が提供しているArduinoプラットフォームのSeeed JP STM32 Boardsをv1.2からv1.3にアップデートしました。v1.2が7/28リリースなので、約3か月ぶり。
さて、何が変更になったのでしょうか?
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)
の後ろのセミコロンを入れ忘れていると、次のメッセージが表示されます。
左が旧バージョン、右が新バージョン。入力モレの位置を表示しています。
関数名を間違えたときは、関数の場所にリコメンドを表示しています。
RedHat Developer Blogにいくつか例があるので、興味のある方はどうぞ。
HardwareTimer
いままで、Seeed JP STM32 Boardsには、マイコン内蔵のタイマーを利用するクラスが用意されていませんでしたが、今回、追加されました。
Arduino Core STM32からは、まだドキュメントは提供されていませんが、サンプルコードが公開されています。
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 | 松岡 | 作成 |