スイッチを追加する。
STM32マイコン徹底入門 (TECH I Processor)
- 作者: 川内康雄
- 出版社/メーカー: CQ出版
- 発売日: 2010/10/29
- メディア: 単行本
- 購入: 1人 クリック: 1回
- この商品を含むブログを見る
英語のデータシート読むの疲れたので。
2週間ばかり放置していましたが、再開してまずはスイッチを実装します。
PA12が開いているのでここをスイッチとします。
#define SWITCH_LED GPIO_Pin_12
と定義。
USERBUTTONの初期設定を参考にすると、
GPIO_InitStructure.GPIO_Pin = SWITCH_LED; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz; GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_init()にずらずらっと書くと見にくいので、GPIO_InitStructure.の構造体にそれぞれの要素を格納?する。
サンプルコードには、Speedを設定していましたが、本では無いのでコメントアウトしてみる。
GPIO_PuPdはプルアップ、プルダウン抵抗の設定?
でも、GIPO_Modeで設定するんじゃないの?
STM32L1XXXX Standard Peripherals Firmware Library
を参照すると、GPIO_Modeは、
GPIO_Mode_IN GPIO Input Mode GPIO_Mode_OUT GPIO Output Mode GPIO_Mode_AF GPIO Alternate function Mode GPIO_Mode_AN GPIO Analog Mode
GPIO_PUPDは、
GPIO_PuPd_NOPULL GPIO_PuPd_UP GPIO_PuPd_DOWN
と定義されています。
ようは、別々に設定できるみたいですね。
出力のときも、プルアップできるというわけではなさそうなにおいはする。
LD_BLUE_GPIO_PIN3をスイッチオンで点灯させると、
expression must be a modifiable lvalue
というエラーが出て途方にくれましたが、
if (GPIO_ReadInputDataBit(GPIOA,SWITCH_LED) = 0)
代入式になってただけです。正しくは、
if (GPIO_ReadInputDataBit(GPIOA,SWITCH_LED) == 0) GPIO_LOW(GPIOA, LD_BLUE_GPIO_PIN3); else GPIO_HIGH(GPIOA, LD_BLUE_GPIO_PIN3);
GPIO_ReadInputDataBitでビットごとの情報を読み取れます。
PICだともっと短く記述できるのにとか思ったら負けです。
スイッチ実装までいけました。
なんとかPICぐらいには使いこなせそうかな・・・
RCCとかいまだに呪文な部分があるので、早めに把握したい。
C言語に対しては多少アレルギーぬけてきた。
USERBUTTONはプルダウンなので、プルダウンにします。