MCUXpressoでのレジスタ値の確認の仕方

レジスタを色々と書き換えていると、デバッグするときに実際に狙ったとおりに値が反映されているか確認したくなりますね。今回はMCUXpressoでデバッグ時にメモリマップ上にあるレジスター値をチェックする方法をまとめました。

この記事でわかること

MCUXpressoでメモリマップをチェックする方法

参考に以前あつかったLチカのサンプルコードを使います。

   while (1)
    {
      /* Delay 1000 ms */
       SysTick_DelayTicks(1000U);
      //Lチカ PTB22に赤LEDがつながっているので
      //GPIOB pin22の出力をこの関数でLO/HIしてる
       GPIO_PortToggle(GPIOB, 1u << 22); 
    }

確認するレジスター

前記事でも説明してますが、GPIO_PortToggle関数は、以下のPTORというレジスタを書き換えています。

GPIOの基本的な使い方

ちなみにサンプルは基板に実装された赤色LED(GPIOB22)をチカチカしてます。

赤枠が赤色LEDがアサインされている所です。細かい点は前記事に説明しています。これによれば、例えば、PTORのbit22に1を書けば、その時のPDORのbit22が1だったら0になって、0だったら1になるようです。

PTORはWrite only のレジスターなので、値が見られません。なので、PDORのPDO22のbitを確認して、デジタル出力の指示がHIGH/LOWと切り替わっているか確認します。

メモリーマップを表示する

defaultの画面レイアウトで説明しますので、もしカスタマイズされていて、よくわからないなら、メニューバーからWindow -> Perspective -> Reset Perspectiveで画面をリセットしましょう。

画面の左上のウィンドウのタブでPeripherals+をクリックすると、K64Fで利用できるモジュールの一覧が表示されます。今回は、GPIOBにあるレジスタを表示させたいので、GPIOBにチェックをいれます。

チェックをいれると下みたいなwindowが表示されます。New RenderingsのところでPeripheralをクリックします。

何かでてきました。これはGPIOBのレジスタのリストです。目的のレジスタはPDORでした。一番上にあります。クリックして、中身を展開します。

なんか32bit分全部でました。赤色LEDはGPIOB22なので、PDO22に注目します。

プログラムをデバッグモードでスタートさせます。最初、Lチカ用のdelay関数のループにはいってもどってこないので、F7を押して、脱出しときます。

あとはF6を押していくと、メインループの処理をステップで実行してくれます。下が、確認結果です。

OUTPUTがLOWの時
OUTPUTがHIGHの時

PDO22のValueを見てください、上の画像が0で下の画像では、1になってます。ちゃんとレジスタが書き換わっています。

Renderingの指定のところで設定をHexにすると別のスタイルでも値を確認できます。

OUTPUTがLOWの時
OUTPUTがHIGHの時

他にも表示フォーマットがあるので、用途に合わせて選ぶとよいですね。

以上になります。簡単ですが、デバッグ時にはいつか必ず必要になる機能ですので、覚えておく必要があります。

それでわ、ばんざいMCUXpresso🙌

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です