Wio LTE JP Version で FreeRTOS を使おうとして #include <STM32FreeRTOS.h>
を加えると、SerialUSB が使えなくなる※問題への解決策です。
※使えなくなる = OS 上では COMxx で認識できているが、TeraTerm 等で上記 COM ポートに接続を試みても「見つからない」となる
確認環境:
- ボード定義
- SeeedJP STM32 Boards 1.9
- ライブラリ
- STM32duino FreeRTOS 10.3.2
- Wio LTE for Arduino 2.31.0
結論
スケッチファイル(**.ino)があるディレクトリに STM32FreeRTOSConfig_extra.h
を作成してプロジェクト内に加え、 #define configMEMMANG_HEAP_NB 3
を設定すれば SerialUSB が使えます。
STM32FreeRTOSConfig_extra.h
#define configMEMMANG_HEAP_NB 3
YOUR_PROJECT.ino
#include <WioLTEforArduino.h>
#include <STM32FreeRTOS.h>
#include <STM32FreeRTOSConfig_extra.h>
注意事項
STM32ArduinoでCDCを利用しながらFreeRTOSとSTLinkのシリアル出力を利用 の "古い情報" と記載されているワークアラウンドにて SerialUSB
の利用に成功しました。
参照元同様に動作の理由は深く追っていないため、この定義による副作用は未知数です。
参照
- Wio LTE Cat.1 + FreeRTOS / Seeed K.K. エンジニアブログ
- Why USB Serial is not working with STM32FreeRTOS in STM32 black pill?
- STM32FreeRTOS/src/heap.c at main · stm32duino/STM32FreeRTOS
- STM32ArduinoでCDCを利用しながらFreeRTOSとSTLinkのシリアル出力を利用
- HID will not work if STM32FreeRTOS.h is included. #16
EoT