当用STM32控制多个光电开关时,用多个if语句就不可以了,光电开关总是输出低电平,这是为什么?

2019-07-15 08:31发布

STM32F103单片机控制1个光电开关时,可以采用下面的语句:
#define  Key_1   GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_4)

if(Key_1==0)
{
        GPIO_ResetBits(GPIOC,GPIO_Pin_7);//继电器1闭合
        GPIO_ResetBits(GPIOC,GPIO_Pin_6);//继电器2闭合
        GPIO_SetBits(GPIOB,GPIO_Pin_15);//继电器3断开        
        GPIO_SetBits(GPIOB,GPIO_Pin_14);//继电器4断开                                                        
}
然而,当用STM32控制多个光电开关时,用多个if语句就不可以了,光电开关总是输出低电平,这是为什么?麻烦各位
朋友看一下,本人十分想弄明白。

if(Key_1==0)
{
        GPIO_ResetBits(GPIOC,GPIO_Pin_7);//继电器1闭合
        GPIO_ResetBits(GPIOC,GPIO_Pin_6);//继电器2闭合
        GPIO_SetBits(GPIOB,GPIO_Pin_15);//继电器3断开        
        GPIO_SetBits(GPIOB,GPIO_Pin_14);//继电器4断开        
                                
        GPIO_SetBits(GPIOB,GPIO_Pin_0);//灭灯                        
}
if(Key_2==0)
{
        GPIO_SetBits(GPIOC,GPIO_Pin_7);//继电器1断开
        GPIO_SetBits(GPIOC,GPIO_Pin_6);//继电器2断开
        GPIO_ResetBits(GPIOB,GPIO_Pin_15);//继电器3闭合
        GPIO_ResetBits(GPIOB,GPIO_Pin_14);//继电器4闭合                                
}
  if(Key_3==0)
{
        GPIO_SetBits(GPIOC,GPIO_Pin_7);//继电器1断开
        GPIO_SetBits(GPIOC,GPIO_Pin_6);//继电器2断开
        GPIO_ResetBits(GPIOB,GPIO_Pin_15);//继电器3闭合
        GPIO_ResetBits(GPIOB,GPIO_Pin_14);//继电器4闭合                                                               
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
人中狼
1楼-- · 2019-07-15 17:02
 精彩回答 2  元偷偷看……
shiguangrenran
2楼-- · 2019-07-15 21:11
王栋春 发表于 2018-5-1 20:41
楼主的电子线路可以一起晒一下

问题解决了,是供电出了问题
李春明
3楼-- · 2019-07-16 01:45
shiguangrenran 发表于 2018-5-6 11:37
问题解决了,是供电出了问题

看来你的电源容量小了
shiguangrenran
4楼-- · 2019-07-16 05:48
对,我用的是开发板的电源引脚给光电开关供的电,输出全为低电平
shiguangrenran
5楼-- · 2019-07-16 09:31
对,我用的是开发板的电源引脚给光电开关供的电,输出全为低电平
shiguangrenran
6楼-- · 2019-07-16 12:07
 精彩回答 2  元偷偷看……

一周热门 更多>