|
哪位大神幫忙看一下程序運行一段時間,就跑死了,非常感謝!
#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);
}
}
}
|
|