技術共有

04OLEDの導入とデバッグ方法

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

デバッグモード

ここに画像の説明を挿入します
コンピュータは、見たい変数を画面に直接出力することができますが、シングルチップコンピュータはコストや回路構造の制限により、あまり評価されていないことがよくあります。
C言語の学習と同じように、printf関数を使わずに学習することはできません。したがって、デバッグツールが必要です。

シリアルデバッグ

シリアル ポートのデバッグは非常に一般的であり、シリアル ポートを使用してマイクロコントローラをコンピュータに接続することは、コンピュータの画面をマイクロコントローラにハングアップすることと同じであり、これにより、PCB を設計するときに、マイクロコントローラがデバッグ情報を表示しやすくなります。プログラムのデバッグ用(利点は、デバッグ用の強力なコンピュータの助けを借りて、コンピュータ上のソフトウェアは個々のパラメータを表示するだけでなく、曲線、グラフィックス、画像などを表示できることです。独自のソフトウェアを作成することもできます) (強力なユーザー対話機能を実現するため) (欠点は、コンピューターをドラッグする必要があることと、通常のシリアル ポート アシスタントは情報フローの形式でしかデータを提示できないこと、つまり、行ごとに印刷することしかできないことです。多くの変化するデータを表示する必要がある場合、コンピュータでは画面をスワイプすることによってのみ表示できます)

表示デバッグ

ディスプレイのデバッグの利点は、変化するデータを上書きして更新できることと、ディスプレイを常にマイクロコントローラーに接続できることです。少し複雑なことを行う場合は、人間とコンピューターの対話インターフェイスが必要になります。ディスプレイを製品の一部として使いやすいこと(画面が小さすぎて表示内容が制限されるのが欠点)
この画面はデバッグに使用できます。ドライバー機能については後で説明します。まずOLEDをプログラムデバッグモジュールとして扱います

その他のデバッグ方法

プログラムがどこで実行されるかわからない場合は、その場所にライティング コードを配置することでライティングをデバッグする方法もあります。
コメントのデバッグ方法では、プログラムが元々は良好であったが、特定のプログラムを追加した後に停止した場合、新しく追加されたコメントをすべて削除し、通常の実行状態に戻し、エラーが表示されるまで 1 行ずつコメントを解除するか、コメント アウトします。一部を使用して別の部分をテストし、実行されるプログラムの部分を減らし、問題のあるプログラムを特定します。
比較方法を使用して問題のないプログラムを見つけ、そのプログラム ロジックを徐々に自分のプログラム ロジックに置き換えます。

要約:

テスト手順の基本的な考え方: 範囲の絞り込み、変数の制御、比較テストなど。

有機EL

導入

ここに画像の説明を挿入します
OLED の各ピクセルは個別の発光ダイオードですが、LCD はバックライトを必要とするため、比較的省電力です。
応答速度が速いため、OLED のリフレッシュ レートが向上します。
高速バスタイミングによりプログラムのブロックも回避可能
広い視野角:OLEDは自発光型なので、どの角度から見ても表示内容が鮮明です。

このシンプルな OLED を駆動するには、数本のワイヤしか必要とせず、使用するリソースも比較的少なくなります。

ピクセルの色は次のとおりです: 白、青、黄、青 (1/4 は黄色、3/4 は青、実際の 2 色ではありませんが、異なる領域に固定されており、画像を表示する必要があるインターフェイスの作成に適しています)タイトル行)

ハードウェア回路

ここに画像の説明を挿入します
通常、ピン 4 は IIC プロトコルを使用し、ピン 7 は通常 SPI プロトコルを使用します。

OLEDドライバー機能

ここに画像の説明を挿入します
STM32 ピンが初期化されていない場合、デフォルトでフローティング入力モードになります。

この OLED モジュールを使用するには、ピンと、そのピンを使用するペリフェラルおよびクロックを変更するだけで、残りの機能がパッケージ化されています。
ここに画像の説明を挿入します

OLED_FONT.h ファイルには、OLED のフォント データが保存されます。OLED ディスプレイ画面にはフォントがないため、文字グラフィックを表示する場合は、まず文字のドット マトリクス データを定義する必要があります。そのため、このファイルにはドット マトリクスが保存されます。文字のデータ(フォント)です。
C 言語は 2 進数を書くことができず、代わりに 16 進数のみを使用できます。C 言語は、低レベルのコンピューター プログラミング言語として、2 進数の書き込みをサポートしていません。また、C 言語はアセンブリ言語に変換する必要がありますが、アセンブリは 2 進数の書き込みをサポートしています。入力。でもそれがルールなのかもしれない。

ケイルデバッグモード

エントリー方法

ここに画像の説明を挿入します
プロジェクト オプション [デバッグ] では、ハードウェア上のオンライン シミュレーション用のデバッグ オプションを構成できます。STLINK はマイクロコントローラーに接続する必要があります。
左側のものはエミュレータを使用しており、コンピュータがマイクロコントローラの動作をシミュレートします。
シミュレーションの前に、プロジェクトのコンパイルに問題がないことを確認してください (問題がある場合は、最初に解決してください)

STLINK が接続されていない場合は、「赤い d」をクリックしてデバッグ モードに入ります。エラーが報告されます。
ここに画像の説明を挿入します

keilデバッグインターフェースウィンドウ

ここに画像の説明を挿入します
アセンブリ プログラミングを使用してレジスタ グループとステータス フラグをプログラムする場合は、それらを明確に理解する必要があります。
C 言語を使用する場合は、これらを心配する必要はありません。

ここに画像の説明を挿入します

簡単な機能説明

この部分はプログラムの実行制御です
1. リセット 2. フルスピードで実行 3. フルスピードでの実行を停止 4. シングルステップ操作 5. 現在の行をスキップしてシングルステップで実行 6. 現在の関数からジャンプしてシングルステップで実行 7. 指定された行に移動カーソルを移動してシングルステップを実行する

ここに画像の説明を挿入します
黄色の矢印は実行されるコードの次の行を示し、青色の矢印はカーソルがある行を示します。
ここに画像の説明を挿入します
左側の濃い灰色の領域をクリックしてブレークポイントを設定し、「フルスピードで実行」をクリックすると、ブレークポイントが停止するまでプログラムが実行され続けます。ブレークポイントがない場合は、プログラムは自動的に停止しません。 「停止」ボタンをクリックすると、プログラムが停止します。

ここに画像の説明を挿入します
[RST] をクリックしてリセットすると、プログラムが最初に戻ります。プログラムがリセット割り込み関数に入っていることがわかり、リセット後にプログラムがここから実行を開始することがわかります。

まず、プログラムは SystemInit 関数にジャンプし、その後その関数が main 関数に実行されます。

このアプローチにより、プログラムがどのように実行されているかを正確に追跡できます。このモードでは、関数がどのように実行されるかを段階的に調べることができます。こうすることで、プログラムの論理的な理解が深まります。

これはデバッグ モードの単純な関数です。デバッグ モードにはさらに強力な関数があります。

より強力な機能

ここに画像の説明を挿入します
1 つ目はコマンド ウィンドウで、開閉できます。
ここに画像の説明を挿入します
2 番目の逆アセンブル ウィンドウ
3 番目のシンボル ウィンドウでは、プログラム内のすべての変数の値をリアルタイムで表示できます。
ここに画像の説明を挿入します
ここに画像の説明を挿入します
構造体の値の変化を確認したい場合は、右クリックして Watch1 ウィンドウに追加します。
ここに画像の説明を挿入します
単一ステップをクリックして実行すると、変数値の変化を確認でき、非常に便利です。

シリアルポートディスプレイもあります
ここに画像の説明を挿入します
ロジックアナライザー
ここに画像の説明を挿入します
待ってください。時間をかけて自分で詳しく学んでください

また、ペリフェラル メニューをクリックしてシステム リソースを表示し、すべてのペリフェラル レジスタを表示することもできます。
ここに画像の説明を挿入します
たとえば、GPIOA を選択すると、GPIOA ペリフェラルのすべてのレジスタが右側に表示されます。
ここに画像の説明を挿入します

デバッグ中、STM32 はプログラムをリアルタイムで実行します。シミュレーション ポイントが停止すると、stm32 プログラムも実行を停止します。ただし、リアルタイムの変更には多少の遅れが生じます。 stm32 はリアルタイムでプログラムを実行し、ペリフェラル レジスタのステータスをリアルタイムに表示します。また、プログラムの開始、停止、およびシングルステップ操作をいつでも制御できます。プログラムがどのように実行されるのかわからない、変数がたくさんあるのに表示するのが不便、レジスターがどのように実行されているかを確認したいなど、調整が難しいプログラムに遭遇したとき。値が正しく設定されている場合は、keil を使用してデバッグ モードを自動的に実行できます。プログラムを変更する場合、デバッグ モードで直接変更することはできません。プログラムを変更するには、まずデバッグ モードを終了し、再コンパイルしてから、デバッグ モードに入る必要があります。

keil のさらなる機能については、さらなる研究が待たれます。
ここに画像の説明を挿入します
[ヘルプ] をクリックすると、公式ヘルプ ドキュメントが開きます。このドキュメントには、最も信頼できる詳細な紹介があり、keil の使用方法に関するより多くのブラック テクノロジが含まれています。