経緯
STM32F411でVGA(640x480 8色)を実現した。
特に何かに使う当ても無いが、BASICが使える様にでもしようかなと。
お馴染みの「豊四季タイニーBASIC」がグラフィック付きで動きます。
色々つけ加えたら、プログラムサイズは93KBとなって居ます。
◆◆◆ tinyじゃ無くてFat(太っちょ)だな ◆◆◆
Fatになった理由は、Float用のライブラリを使った為だと思う。
512KBのFLASH容量が有るから問題無いでしょう。
それより、RAM容量が2KB一寸しか残って無いのが…。
結果の表示
先に結果を提示しますが、こんな感じでマンデルブローが描けます。
※実物はモアレも無く写真よりきれいです。
※マンデルブローソフトはbasic.cの末尾にコメントとして書いて居ます。
「参考ソフトはGithubに上げて居ます」
開発環境
前回に多少の追加が必要です。
ハード
基板:STM32F411CEU6搭載の物
※通称BlackPillと呼ばれており、クローンが複数あるとか。
ローダー:ST-LINK2
※之もクローが複数とか、ピン配置の違う物を購入したが普通に使えた。
VGAコネクタ:STM32F411との配線が必要
※参考ソフトを動作させる為の基板との接続を下記に示す。
HS <- PA6
VS <- PB1
R <- PA7 ※500Ωを入れて居るが不用かも。
G <- PA1 ※ 〃
B <- PB8 ※ 〃
GND <- GND
USBコネクタ(メス)
※キー入力用(シリアルを使うなら、無くても可)
USB D- <- PA11
USB D+ <- PA12
USB VCC <- +5V ※別途5Vの供給が必要
USB GND <- GND
USBシリアル変換器
※キー入出力用(USBキーを繋ぐなら、無くても可だが便利)
TX PA10(RX)
RX PA15(TX)
ソフト
開発ツール:STM32CubeIDE 1.19.0
※STMicroelectronics謹製の開発ソフト。
無料で使えるが登録が必要。
※2.xxの環境が存在するが、CubeMXとの連携が解らず今回も見送り。
使用方法は「前回を参照」してください。
豊四季tiny basicの追加・変更部分
別にtbasicに不備が有るというのではなく、グラフィックを追加したので。
だったら、ついでにいじっちぇ程度の結果です。
◇仕様を変えた部分
1.マルチコマンドのセパレータを";"から":"に変更。
※之はプリント命令に非改行(";")追加のあおりです。
2.変数をint16bitから単精度floatに変更。
※之はマンデルブローを書かせる為です。
※int<->floadの変換はコンパイラ任せなので、何処かで破綻して居るかも知れません。
◇追加表示命令
1.?(PRINT)。※PRINTとまったく一緒。
2.PRINT命令の末尾に非改行(";")指示を記述可能。
◇追加グラフィック命令
1.CLS
CLS で画面をクリア
2.LOCATE
LOCATE XP YP の指定で文字表示位置が移動する
3.COLOR
COLOR FC BC で文字色(FC)と背景色(BC)が指定される。
4.PSET
PSET XP YP C で指定点に色Cで点を打つ。
5.LINE
LINE XS YS XE YE C で、XS,YSを始点にXE,YEを終点とする線を色Cで引く。
6.RECT
RECT XS YS XE YE C で、XS,YSを始点にXE,YEを終点とする四角を色Cで書く。
RECT XS YS XE YE C 1 の場合は、塗りつぶしとなる。
7.CIRCLE
CIRCLE XS YS R C で、XS,YSを中心に半径Rで円を描く。
CIRCLE XS YS R C 1 の場合は、塗りつぶしとなる。
8.PALETTE
PALETTE XS YS "16進文字" で、XS,YSに16進数を画像として書き込む。
◇デバッグに使える命令
1.SAVE
SAVE bn で、現在のプログラムがbn(0~23)にセーブされる。
VRAMを使うので動作時は画像が乱れる。
2.LOAD
LOAD bn で、格納しているプログラムがロードされる。
LOAS bn 1 とすると、ロード後に自動起動する。
3.MON
MON で、モニターが起動し、Qで抜る。
DxxxxxxxxとMxxxxxxxxしか使えるコマンドは有りません。
4.DUMY_PRGの起動時登録
dumy_ena(disp_vga.c内)を"1"にすれば、予め設定した起動プログラムが走る。
表示について
640x480表示時に画面左端のドットが2倍表示されるのは仕様です。
※SPIにロードしてからSPIが動作する迄は、多少時間が必要とグーグルさんが言ってました。
嫌なら、640x468表示に設定してください。
感想
tbasicを之ほど弄るつもりは無かったのだけど、つい勢いで機能追加をしてしまった。
動作不良が有れば、多分それは追加部分が悪さして居るのだと思います。
なお、上記記載内容は全て無保証であり、各自の責任においてご利用願います。

