硬件及控制设计:用的单片机是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);
}
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
请正确使用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
嘿嘿嘿,明白了,也谢谢你告诉我光电开关。功能跟超声波传感器,接近开关都差不多?
一周热门 更多>