メディア
連載
» 2022年05月10日 10時00分 公開

入力ポートが足りないときに、スイッチ入力数を増やす裏ワザQ&Aで学ぶマイコン講座(71)(3/3 ページ)

[小谷豊(STマイクロエレクトロニクス),EDN Japan]
前のページへ 1|2|3       

GPIOポートの特徴

 図4は、STM32G0マイコンのGPIOポートを示しています。内蔵のプルアップ抵抗の有効/無効を設定で切り替え可能です。また、出力レベルをプッシュプル(HIGHもしくはLOWを出力)、出力レベルをオープンドレイン(ハイインピーダンス状態もしくはLOWを出力)などに設定で切り替えることもできます。

図4:GPIO端子の特徴[クリックで拡大]
STM32G0シリーズのリファレンス・マニュアルから引用

GPIOポートの入出力設定

 GPIOポートの入出力は、GPIO port mode register(GPIOx_MODER)で設定できます。PBxxポートを使用する場合は、GPIOB_MODERを設定します。入力ポートに設定する場合は、該当するポート番号のMODEビットを00に設定します(PB4を入力ポートに設定したい場合は、MODE4ビットを00に設定)

 同様に、出力ポートに設定する場合は、該当するポート番号のMODEビットを01に設定します。マイコンがリセットされた状態では、MODEビットは11に設定されており、アナログ入力モードになっているので、入力ポートであってもMODEビットの設定が必要です。

GPIOポートのオープンドレイン設定

 出力に設定したポートをオープンドレイン出力設定にする場合は、GPIO port output type register(GPIOx_OTYPER)の対応するポート番号のビットを1に設定します(PB0をオープンドレイン出力に設定する場合は、GPIOB_OTYPERのビット0を1に設定)。マイコンがリセットされた状態では、GPIOx_OTYPERのビットは0に設定されており、プッシュプル出力設定になっているので、GPIOx_OTYPERのビット設定が必要です。

GPIOポートの内蔵プルアップ抵抗設定

 入力ポートの内蔵プルアップ抵抗を有効にするには、GPIO port pull-up/pull-down register(GPIOx_PUPDR)で設定できます。PBxxポートを使用する場合は、GPIOB_PUPDRを設定します。ポートをプルアップに設定する場合、該当するポート番号のPUPDビットを01に設定します(PB4をプルアップに設定する場合は、PUPD4ビットを01に設定)

初期化ソースコード生成ソフトの活用

 先ほど述べたように、GPIOポートはさまざまな設定ができますが、キーパッドのように多数のピンを使用する場合、個々のピンの初期化ソースコードを作成するのに手間がかかります。マイコンによっては、GPIOの初期化ソースコードをGUIで設定/生成できるソフトが提供されているため、これを使用することで、ソフト開発時間の大幅な短縮が可能です。STM32G0マイコンでは、「STM32CubeMX」というソフトを使用することで、GUIで簡単にGPIOの入出力設定や、プルアップの設定をすることができます(図5

図5:STM32CubeMXでのGPIO設定例[クリックで拡大]

Q&Aで学ぶマイコン講座:過去の質問一覧はこちら

前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSフィード

公式SNS

EDN 海外ネットワーク

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.