1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

STM32F411とVGAとTINY?BASIC

1
Posted at

経緯

 STM32F411でVGA(640x480 8色)を実現した。
 特に何かに使う当ても無いが、BASICが使える様にでもしようかなと。
 お馴染みの「豊四季タイニーBASIC」がグラフィック付きで動きます。
 色々つけ加えたら、プログラムサイズは93KBとなって居ます。
 ◆◆◆ tinyじゃ無くてFat(太っちょ)だな ◆◆◆
 Fatになった理由は、Float用のライブラリを使った為だと思う。
 512KBのFLASH容量が有るから問題無いでしょう。
 それより、RAM容量が2KB一寸しか残って無いのが…。

結果の表示

 先に結果を提示しますが、こんな感じでマンデルブローが描けます。
 ※実物はモアレも無く写真よりきれいです。
  ※マンデルブローソフトはbasic.cの末尾にコメントとして書いて居ます。
 「参考ソフトはGithubに上げて居ます

maandel.jpg

開発環境

 前回に多少の追加が必要です。
 ハード
 基板: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)

hard.jpg

 ソフト
 開発ツール: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を之ほど弄るつもりは無かったのだけど、つい勢いで機能追加をしてしまった。
 動作不良が有れば、多分それは追加部分が悪さして居るのだと思います。
 なお、上記記載内容は全て無保証であり、各自の責任においてご利用願います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?