STM32F7 DiscoveryボードにはLCDが搭載されているので、GUIのあるアプリケーションを作ってみたくなります。

ということで今日から少しずつSTM32マイコン用のGUIを勉強します。

使用するのはSTマイクロさんが提供しているSTemWinというGUIライブラリーです。サードパーティーからカッコいいGUIライブラリーが提供されていますが、カッコ良さは後回しにしてひとまずこれを勉強します。

例によってCubeMXでペリフェラルとクロックを設定してSystem Workbench for STM32用のプロジェクトを生成します。これはデフォルト設定のまま変更をしませんでした。

STemWin_F7_01_001.png

LCDを使用するためのヘッダーとライブラリソースをプロジェクトに入れます。Drivers/BSPの下とDriver/Componentsの下とUtilities/Fontsの下のファイルがそれです。

STemWin_F7_01_003.png

プロジェクトのIncludesパスを設定します。Drivers/BSPから下がそれです。(BSPをBPSと間違えて入力した行がありますが、これはBSPに直しました)

STemWin_F7_01_004.png

このままビルドするとシンボルの二重定義エラーが出るので、不要な部分をコメントアウトします。stm32746g_discovery_lcd.cで、画像の選択部分(フォントに関するインクルード部分)をコメントアウトしました。

STemWin_F7_01_005.png

main.cの変更です。

STemWin_F7_01_006.png

追加したコードはこれです。


/* LCD Initialization */
BSP_LCD_Init();
BSP_LCD_LayerDefaultInit(0, LCD_FB_START_ADDRESS);
/* Enable LCD */
BSP_LCD_DisplayOn();
/* Select LCD Background Layer */
BSP_LCD_SelectLayer(0);
/* Clear Background Layer */
BSP_LCD_Clear(LCD_COLOR_BLACK);
/* Display something */
BSP_LCD_SetTextColor(LCD_COLOR_RED);
BSP_LCD_SetFont(&Font12);
BSP_LCD_DisplayStringAt(0, 0, (uint8_t *) "STM32F7 Discovery Hello World!", CENTER_MODE);

これでビルドしてボードに書き込むとこんな感じで動きます。

IMG_2717.JPG

この時点ではLCDに文字列を表示しただけで、STemWinの機能は使っていません。

なんだか難しそうです。じっくり取り組むことにします。

最終的にはこのボードの上で、ギターのエフェクターを実装することになります。ロータリーエンコーダーやスイッチを外付けして各エフェクターの設定ができるようにするのでGUIは必要なくなりますが、当面はギターに組込まずに開発を行う際に、外付け部品の配線や制御が面倒くさいのでGUIでコントロール機能を実装しちゃいます。

こういう組み込みもの。ソフトウェア(この場合は信号処理プログラム)とハードウェア(ギターとコントロール類)の組み合わせを行う作業です。業務アプリケーションのユーザーインターフェースと違って、ハードウェアでユーザーインターフェースを実現するノウハウがほとんどないので、ハードウェア側の設計と実装が頭を悩ませます。

どうなりますことやら・・・