|
哪位大神帮忙看一下程序运行一段时间,就跑死了,非常感谢!
#include "sys.h"
#include "led.h"
#include "delay.h"
#include "iwdg.h"
#include "wwdg.h"
#include "usart.h"
#include "myfun.h"
#include "timer.h"
#include "weizhi.h"
#include "adc.h"
#include "key.h"
extern int h1,h2,h3,h4;
extern float kp1,kp2,kp3,kp4;
extern int arr[6];
int biaozhi_hansheng=0;
int reset=0;
int d1=0,d2=0,d3=0,d4=0;
int main(void)
{
int biaozhi_hansheng=0;
int key=0;
/*************鼾声变量******************/
int snore_tine=0,snore_tine_max=0;
int snore_interval=0,snore_interval_max=0;
int x=0,y=0;
int m, n;
unsigned char snore_s4=0;
unsigned char snore_s5=0; //判断 第五步是否符合条件,如果符合则置一
/*************鼾声变量******************/
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
uart2_init(115200);
uart_init(115200);
LED_Init();
TIM3_Int_Init(999,7199);
ADCx_Init();
KEY_Init();
while(1)
{
key=KEY_Scan(1);
if(reset==0)
{
weizhi();
reset=1;
kp1=kp2=kp3=kp4=0;
GPIO_Write(GPIOC,0x0000);
}
if(biaozhi_hansheng==0)
{
/**********************************鼾声检测**********************************/
if (snoue_count==1)
{
/****** s4 判断 ************************/
for(x=1;x<SNOUE_MAX; x++)
{
snore_tine = A[x]-A[x-1];
if ( snore_tine < 0) //如果这个值是负的, 那模就把他变为正值
{
snore_tine = -snore_tine;
}
else
{
snore_tine = snore_tine;
}
if (snore_tine_max >=snore_tine)
{
snore_tine_max=snore_tine_max;
}
else
{
snore_tine_max=snore_tine;
}
}
printf("鼾声长度最大为=%d\r\n",snore_tine_max);
/****** s4 ************************/
if (snore_tine_max <= (1.5 * A[0]))
{
printf("鼾声长度符合条件\r\n");
snore_s4=1;
}
else
{
snore_s4=0;
snoue_count=0;
printf("鼾声长度不符合条件!!!!\r\n");
}
/****** s5 ************************/
if ( snore_s4 == 1 ) //如果S4符合条件
{
for ( y=1; y< ( SNOUE_MAX - 1 ); y++)
{
snore_interval = B[y] - B[y-1];
if ( snore_interval < 0) //如果这个值是负的, 那模就把他变为正值
{
snore_interval = -snore_interval;
}
else
{
snore_interval = snore_interval;
}
if ( snore_interval_max >= snore_interval )
snore_interval_max = snore_interval_max;
else
snore_interval_max = snore_interval;
}
printf("鼾声间隔时间最大为:=%d\r\n",snore_interval_max);
if (snore_interval_max <= (1.5 * B[0]))
{
printf("鼾声 间隔长度符合条件\r\n");
snore_s5=1;
}
else
{
snore_s5=0;
snoue_count=0;
printf("鼾声 间隔 长度不符合条件!!!!\r\n");
snoue_count=0;
}
} //对用着判断(S4 ==1)
}
if ( snore_s5 == 1)
{
printf("鼾声 检测符合,需要调整相应的位置\r\n");
biaozhi_hansheng=1; //打鼾声了
for (m=0; m<=SNOUE_MAX; m++)
A[m]=0;
for (n=0; n<=SNOUE_MAX; n++)
B[n]=0;
snore_s5 =0;
snoue_count=0;
}
/*************************************鼾声监测*****************************/
}
if(key==KEY_UP||biaozhi_hansheng==1)
{
weizhi();
}
if(kp1>=1.7||kp2>=1.8||kp3>=1.8||kp4>=1.9)
{
if(kp1>=kp2&&kp1>=kp3&&kp1>=kp4)
{
d1=1;biaozhi_hansheng=0;
}
if(kp2>=kp1&&kp2>=kp3&&kp2>=kp4)
{
d2=1;biaozhi_hansheng=0;
}
if(kp3>=kp1&&kp3>=kp2&&kp3>=kp4)
{
d3=1;biaozhi_hansheng=0;
}
if(kp4>=kp1&&kp4>=kp2&&kp4>=kp3)
{
d4=1;biaozhi_hansheng=0;
}
}
if(h1==1)
{
GPIO_Write(GPIOC,0x0002);
}
if(h2==1)
{
GPIO_Write(GPIOC,0x0004);
}
if(h3==1)
{
GPIO_Write(GPIOC,0x0008);
}
if(h4==1)
{
GPIO_Write(GPIOC,0x0010);
}
}
}
|
|