本帖最后由 Edffort4 于 2017-8-29 11:21 编辑
我是要实现断短路测试,断路测试:F0,F4用一根线连接,拔掉线的一端,LED0亮,F1,F5用一根线连接,拔掉线的一端,LED1亮
,F2,F6用一根线连接,拔掉线的一端,BEEP响,短路测试:短路F0和F1这两根线,LED0,LED1亮。短路F0和F2这两根线,LED0亮
,BEEP响。短路F2和F1这两根线,LED1亮BEEP响。
现在的问题是:
先不管PF0,PF1,PF2,
就看F4,F5,F6,和LED0,LED1,BEEP
F6:
if(F6==0)
{
beep=1;
}
if(F6==1)
{
LED0 = 0;
beep = 1;
}
if(F6==1)
{
LED1 = 0;
beep = 1;
}
F6不就只有1和0,两种状态...1也响,0也响,你说他响不响
F4,F5也是一样,1也亮,0也亮,你说亮不亮
所以,我拔掉F6和F2任一端,LED0,LED1,BEEP全是同时响同时亮。
最后, 所以程序应该怎么改呢
最后, 所以程序应该怎么改呢
最后, 所以程序应该怎么改呢
//led.h头文件
#ifndef __LED_H
#define __LED_H
#include "sys.h"
#define F4 PFin (4)
#define F5 PFin (5)
#define F6 PFin (6)
#define F0 PFout (0)
#define F1 PFout (1)
#define F2 PFout (2)
#define beep PFout (8)
#define LED0 PFout (9)
#define LED1 PFout (10)
void LED_Init(void);
#endif
//led.c源文件
#include "led.h"
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_Initstructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);
GPIO_Initstructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_0|GPIO_Pin_1;
GPIO_Initstructure.GPIO_Mode =GPIO_Mode_OUT;
GPIO_Initstructure.GPIO_OType = GPIO_OType_PP;
GPIO_Initstructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Initstructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOF,&GPIO_Initstructure);
GPIO_Initstructure.GPIO_Pin = GPIO_Pin_9;
GPIO_Initstructure.GPIO_Mode =GPIO_Mode_OUT;
GPIO_Initstructure.GPIO_OType = GPIO_OType_PP;
GPIO_Initstructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Initstructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOF,&GPIO_Initstructure);
LED0 = 1;
GPIO_Initstructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_4|GPIO_Pin_5;
GPIO_Initstructure.GPIO_Mode =GPIO_Mode_IN;
GPIO_Initstructure.GPIO_OType = GPIO_OType_PP;
GPIO_Initstructure.GPIO_PuPd = GPIO_PuPd_DOWN;
GPIO_Initstructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOF,&GPIO_Initstructure);
GPIO_Initstructure.GPIO_Pin = GPIO_Pin_10;
GPIO_Initstructure.GPIO_Mode =GPIO_Mode_OUT;
GPIO_Initstructure.GPIO_OType = GPIO_OType_PP;
GPIO_Initstructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Initstructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOF,&GPIO_Initstructure);
LED1 = 1;
//main.c文件
#include "led.h"
#include "delay.h"
#include "usart.h"
#include "beep.h"
int main(void)
{
delay_init(168);
LED_Init();
BEEP_Init();
while(1)
{
GPIO_SetBits(GPIOF,GPIO_Pin_2);
GPIO_SetBits(GPIOF,GPIO_Pin_0);
GPIO_SetBits(GPIOF,GPIO_Pin_1);
if(F6==0)
{
beep=1;
}
if(F4==0)
{
LED0 = 0;
}
if(F5==0)
{
LED1 = 0;
}
GPIO_SetBits(GPIOF,GPIO_Pin_0);
GPIO_ResetBits(GPIOF,GPIO_Pin_1);
GPIO_ResetBits(GPIOF,GPIO_Pin_2);
if(F6==1)
{
LED0 = 0;
beep = 1;
}
if(F5==1)
{
LED0 = 0;
LED1 = 0;
}
GPIO_ResetBits(GPIOF,GPIO_Pin_0);
GPIO_SetBits(GPIOF,GPIO_Pin_1);
GPIO_ResetBits(GPIOF,GPIO_Pin_2);
if(F6==1)
{
LED1 = 0;
beep = 1;
}
}
}
下面的图片是错误的,发错了,不用看
下面的图片是错误的,发错了,不用看
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
就看你的F4,F5,F6,和LED0,LED1,BEEP
F6:
if(F6==1)
{
beep=1;
}
if(F6==0)
{
beep=1;
}
F6不就只有1和0,两种状态...1也响,0也响,你说他响不响
F4,F5也是一样,1也亮,0也亮,你说亮不亮
断路代码跟你写的断路代码不一样,你写的逻辑有问题,短路逻辑代码不用写,如果短路,按照你的设计IO口输入都0电平
一周热门 更多>