2.3.4.1. GPIO初期化関数

マイコン入門spacer ad
トップページに戻る(マイコン徹底入門:STM32で始めるARM/Cortex-M3組み込み開発)
「マイコン徹底入門」とは? |  「マイコン徹底入門」を読む |  ダウンロード |  掲示板 |  筆者の自己紹介


Previous: 2.3.4. 実験のためのサンプルプログラム

Up: 2.3.4. 実験のためのサンプルプログラム

Next: 2.3.4.2. 読み込み用関数


マイコン徹底入門:周辺回路編:STM32のペリフェラルを活用: 2. 汎用入出力(GPIO): 2.3. キャラクタ液晶の利用: 2.3.4. 実験のためのサンプルプログラム:

2.3.4.1. GPIO初期化関数

 これまでのサンプルプログラムでは、GPIOの初期化のためにGPIO_Configuration関数を使用していました。今回は他にGPIO_Out_Configuration関数、GPIO_In_Configuration関数を用意しています。GPIO_Configuration関数はクロックの供給と、GPIO_Xポートのピン以外のピンの初期化を行っています。GPIO_Out_Configuration関数はGPIO_Xポートのピンを出力用に設定し、GPIO_In_Configuration関数GPIO_Xポートのピンを入力用に設定します。これらの関数の中身自体は、これまでに紹介したコードと特に変わりはありません。

//**

? * @brief? Configure the GPIO Pins for data as output

? * @param? None

? * @retval : None

? */

void GPIO_Out_Configuration(void)

{

? GPIO_InitTypeDef GPIO_InitStructure;

 

? /* Configure GPIO for GPIO_X */

? GPIO_InitStructure.GPIO_Pin = GPIOX_0_PIN | GPIOX_1_PIN | GPIOX_2_PIN |

??????????????????????????????? GPIOX_3_PIN | GPIOX_4_PIN | GPIOX_5_PIN |

?? ?????????????????????????????GPIOX_6_PIN | GPIOX_7_PIN ;

? GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

? GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

? GPIO_Init(GPIOX_PORT, &GPIO_InitStructure);

}

 

/**

? * @brief? Configure the GPIO Pins for data as input

? * @param? None

? * @retval : None

? */

void GPIO_In_Configuration(void)

{

? GPIO_InitTypeDef GPIO_InitStructure;

 

? /* Configure GPIO for GPIO_X */

? GPIO_InitStructure.GPIO_Pin = GPIOX_0_PIN | GPIOX_1_PIN | GPIOX_2_PIN |

???????????????????? ???????????GPIOX_3_PIN | GPIOX_4_PIN | GPIOX_5_PIN |

??????????????????????????????? GPIOX_6_PIN | GPIOX_7_PIN ;

? GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

? GPIO_Init(GPIOX_PORT, &GPIO_InitStructure);

}

 ここで注意したいのは、ポートを出力として設定するタイミングです。今回接続するLCDモジュールは、R/WHレベルになると、データバス(DB0?DB7)からデータが出力されます。このときマイコン側もピンが出力設定になっていると、電気的にショートしてマイコンやLCDモジュールが破壊されてしまう危険があります。

 例えばマイコン側の出力ピンがHレベルになっている場合には、マイコン内部でピンが+電源に接続されています。そしてモジュール側でピンがLレベルになっている場合には、そのピンは?電源に接続されています。そうするとこれらのピンが接続されてしまうと、結局は、+電源と-電源が直接に接続されたのと同じになってしまうのです。

 そのためマイコン側のポートを出力として設定する前には、LCDモジュール側を確実に入力に設定(R/WLレベルにする)しておく必要があります。

 なおこの問題はLCDのモジュールに限ったことではなく、データの出力と入力を兼用するデバイス全般との接続において注意すべきポイントです。


Previous: 2.3.4. 実験のためのサンプルプログラム

Up: 2.3.4. 実験のためのサンプルプログラム

Next: 2.3.4.2. 読み込み用関数


このページはITと知的財産の法律情報「法務ネット」の管理人が制作・運営しています。
_Toc266801166