光电开关控制出现问题,请各位大佬指点

2019-07-20 09:50发布

硬件及控制设计:用的单片机是STM32F407探索者,漫反射三线光电开关(V正、V负、Vout),现在将Vout连接在PF7上,通过检测PF7的状态来控制灯PF9的亮暗。
硬件状态:        光电开关外部单独供电(12v)满足要求。电路板状态也正常。
问题:              改变光电开关指示灯的亮暗,PF9灯亮暗一直不变。请各位大佬指点。下面附有程序。



#include "sys.h"
#include "delay.h"

#define  a  GPIO_ReadInputDataBit(GPIOF, GPIO_Pin_7)
int aa;

void LED1_Init(void)
{             
  GPIO_InitTypeDef  GPIO_InitStructure;
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//ê1ÄüGPIOFê±Öó

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 ;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//ÆÕí¨êä3öÄ£ê½
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//íÆíìêä3ö
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//éÏà-
  GPIO_Init(GPIOF, &GPIO_InitStructure);//3õê¼»ˉ
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//éÏà-
  GPIO_Init(GPIOF, &GPIO_InitStructure);//3õê¼»ˉ
       
        GPIO_ResetBits(GPIOF,GPIO_Pin_9 );//GPIOF9,F10éèÖøߣ¬μÆÃe
  GPIO_ResetBits(GPIOF,GPIO_Pin_7 );//
}
int main(void)
{
        LED1_Init();
        while(1)
        {
      aa=a;
                  switch(aa)
                        {
                        case 0:
                                 GPIO_ResetBits(GPIOF,GPIO_Pin_9);
            case 1:
                           GPIO_SetBits(GPIOF,GPIO_Pin_9);
                        }
}
}
       


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
a496298685
2019-07-20 14:22
本帖最后由 a496298685 于 2018-1-22 20:14 编辑

请正确使用switch语句。

[mw_shl_code=c,true] switch(aa){
        case 0:
        {  
                GPIO_ResetBits(GPIOF,GPIO_Pin_9);
                break;
        }
        case 1:
        {
                GPIO_SetBits(GPIOF,GPIO_Pin_9);
                break;
        }
        default:
        {
                break;
        }
}[/mw_shl_code]

不加break将是另外一个意思。

必然PF9始终为1


一周热门 更多>