OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3783|回复: 6

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

[复制链接]

1

主题

10

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2017-7-5
在线时间
4 小时
发表于 2018-1-22 20:03:42 | 显示全部楼层 |阅读模式
5金钱
硬件及控制设计:用的单片机是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);
                        }
}
}
       


最佳答案

查看完整内容[请看2#楼]

请正确使用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将是另外一个意思。 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

462

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2017-12-15
在线时间
111 小时
发表于 2018-1-22 20:03:43 | 显示全部楼层
本帖最后由 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


回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2017-7-5
在线时间
4 小时
 楼主| 发表于 2018-1-22 20:39:03 | 显示全部楼层
谢谢啦,这是一个问题
但是改完之后还是不能通过控制光电开关指示灯的亮暗来控制PF9灯的亮暗,找不到问题。在不调试的状态下灯一直是亮的,即处于低电平
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2017-7-5
在线时间
4 小时
 楼主| 发表于 2018-1-22 20:43:06 | 显示全部楼层
在将PF7即Vout线拔掉后,灯会由亮变暗
回复

使用道具 举报

6

主题

462

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2017-12-15
在线时间
111 小时
发表于 2018-1-22 21:39:46 | 显示全部楼层
15071215373 发表于 2018-1-22 20:43
在将PF7即Vout线拔掉后,灯会由亮变暗

由于我并不知道您说的光电开关具体是什么东西。请说明光电开关的相关技术指标,或者是型号,资料,例程等。
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2017-7-5
在线时间
4 小时
 楼主| 发表于 2018-1-23 20:00:53 | 显示全部楼层
兄弟非常感谢谢谢,昨天就是switch用法出现错误,昨天出现异常,是关电开关有问题,今天我重新换了一个新的光电开关,现在可以用啦。
我用的光电开关型号是OMDHON(漫反射光电开关),非常常见的一种传感器。这个传感器在0-30cm的范围内在Vout输出高电平,超过30cm后Vout会输出低电平。
回复

使用道具 举报

6

主题

462

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2017-12-15
在线时间
111 小时
发表于 2018-1-23 20:28:06 | 显示全部楼层
15071215373 发表于 2018-1-23 20:00
兄弟非常感谢谢谢,昨天就是switch用法出现错误,昨天出现异常,是关电开关有问题,今天我重新换了一个新的 ...

嘿嘿嘿,明白了,也谢谢你告诉我光电开关。功能跟超声波传感器,接近开关都差不多?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-20 01:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表