現在私はスイッチがONの状態はボード上のLEDが点灯、OFFで消灯するプログラムをレジスタ直打ちで書いていますが、うまくいきません。レジスタをいじるのはかなりの初心者で、リファレンス等を見ながら探り探り書いたのが下のコードです。
外部の回路でボードの5Vからスイッチへ繋ぎ、スイッチからプルダウン抵抗(10kΩ)を経てGNDへ繋ぎ、スイッチとプルダウン抵抗の間からジャンパ線をD0ピン(PA_3)に繋げています。
ボード上のLED(PA_5ピン)でLチカはできているので、このピンの出力設定はできていると思います。ただPA_3ピンのInput設定もしくは、Inputされた値へのアクセスの方法が間違っているかもしれないと考えています。
そのため、下のコードでどのあたりが間違っているかを指摘し、レジスタから入力ピンの状態を知る方法、また入力ピンの設定方法を教えていただきたいです。
C
1#include "stm32f4xx.h" 2 3int main(void){ 4 RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; 5 6 GPIOA->MODER &= (~GPIO_MODER_MODER5_Msk)|(~GPIO_MODER_MODER3_Msk); 7 GPIOA->MODER |= (GPIO_MODE_OUTPUT_PP << GPIO_MODER_MODER5_Pos); 8 GPIOA->MODER |= (GPIO_MODE_INPUT << GPIO_MODER_MODER3_Pos); 9 10 GPIOA->PUPDR |= (GPIO_NOPULL << GPIO_PUPDR_PUPD3_Pos); 11 12 while(1){ 13 if((GPIOA->IDR & GPIO_IDR_ID3)){ 14 GPIOA->ODR |= GPIO_ODR_OD5; 15 } 16 else{ 17 GPIOA->ODR &= ~GPIO_ODR_OD5; 18 } 19 } 20 return 0; 21} 22
回答1件
あなたの回答
tips
プレビュー