STM32f407如何设置光电开关?

2019-07-20 09:52发布

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "beep.h"
#include "key.h"
#define  a  GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1)

//初始化PA1口读取光电开关电平
void mmm(void)
{
        GPIO_InitTypeDef  GPIO_InitStructure;
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
       GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_1;
       GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_IN;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;       
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
       GPIO_Init(GPIOA, &GPIO_InitStructure);
      
   GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1);
}

int main(void)
{
        mmm();
        delay_init(168);  
        LED_Init();                               
        BEEP_Init();     


        while(1)
        {       a;
                delay_ms(10);
                switch(a)
                {
                        case 1:
                        BEEP=!BEEP;
                        delay_ms(500);
                        break;
                        case 0:
                        LED1=!LED1;
                        delay_ms(500);
                        break;
                       
                               
                 }
         }
}

程序是这样的,但是貌似板子无论如何都不会读取光电开关的值。因为case1和case0两种情况都在同时运行,我把光电开关拔了也还是那样运行。应该是程序错误,但是我又找不到错误。我程序哪里有错?求解答

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。