完成,可以通过ADC防止堵转卡死

This commit is contained in:
2021-09-18 16:08:10 +08:00
parent 04dddf88d1
commit efc8bebe18
5 changed files with 4693 additions and 3500 deletions
+88 -8
View File
@@ -19,8 +19,9 @@
#define KEY2 HAL_GPIO_ReadPin(KEY3_GPIO_Port, KEY3_Pin)
#define KEY3 HAL_GPIO_ReadPin(KEY4_GPIO_Port, KEY4_Pin)
struct button key1,key2,key3,key4;
struct button key1,key2,key3,key4,overload;
extern ADC_HandleTypeDef hadc;
const char d_num_data[2][10]=
{
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f},
@@ -141,9 +142,10 @@ long countdown_set=15000;
void mymain()
{
uint32_t runtime=0,move=0;
uint8_t mode=0;
uint16_t adc;
uint8_t mode=0,overload_mode=0;
uint16_t adc,adc_times=0;
uint32_t adc_l;
uint16_t overload_times=0;
MOTA(0);
MOTB(0);
HC595_DCK(0);
@@ -159,6 +161,7 @@ void mymain()
while(1)
{
switch(mode)
{
case 0:
@@ -172,6 +175,10 @@ void mymain()
mode=1;
}
HAL_ADC_Start(&hadc);
HAL_ADC_GetValue(&hadc);
HAL_ADC_Stop(&hadc);
dis_buff.d_num[0]=((countdown/100)%10);
dis_buff.d_num[1]=((countdown/100)%10);
dis_buff.d_num[2]=((countdown/100)%10);
@@ -202,7 +209,7 @@ void mymain()
dis_buff.dot2=0;
dis_buff.dot3=0;
dis_buff.dot4=0;
overload_times=0;
if(key2.code!=0)
{
mode=2;
@@ -249,10 +256,19 @@ void mymain()
mode=3;
countdown=countdown_set-countdown;
}
if(key4.code!=0)
if(key4.code<0)
{
mode=1;
}
if(overload.code!=0)
{
overload_times+=1;
}
if(overload_times>2)
{
overload_mode=2;
mode=5;
}
break;
case 3:
MOTB(0);
@@ -284,10 +300,19 @@ void mymain()
mode=2;
countdown=countdown_set-countdown;
}
if(key4.code!=0)
if(key4.code<0)
{
mode=1;
}
if(overload.code!=0)
{
overload_times+=1;
}
if(overload_times>2)
{
overload_mode=3;
mode=5;
}
break;
case 4:
//setting mode
@@ -324,6 +349,45 @@ void mymain()
dis_buff.d_num[1]=dis_buff.d_num[1]==0?255:dis_buff.d_num[1];
dis_buff.dot3=1;
break;
case 5:
//overload
MOTB(0);
MOTA(0);
overload_times=0;
dis_buff.d_num[3]=(countdown/100)%10;
dis_buff.d_num[2]=(countdown/1000)%10;
dis_buff.d_num[1]=((countdown/10000)%10);
dis_buff.d_num[1]=dis_buff.d_num[1]==0?255:dis_buff.d_num[1];
dis_buff.dot3=1;
dis_buff.led_err=1;
if(key4.code!=0){mode=1;}
if(key2.code!=0)
{
mode=2;
if(overload_mode==2)
{
}else
{
countdown=countdown_set-countdown;
}
}
if(key3.code!=0)
{
mode=3;
if(overload_mode==3)
{
}else
{
countdown=countdown_set-countdown;
}
}
break;
}
@@ -352,7 +416,23 @@ void mymain()
dis_buff.led_run=1;
}
}
HAL_ADC_Start(&hadc);
adc_l+=HAL_ADC_GetValue(&hadc);
adc_times+=1;
HAL_ADC_Stop(&hadc);
if(adc_times==32)
{
adc=adc_l>>5;
adc_times=0;
adc_l=0;
}
if(adc>600)
{
GEI_BUTTON_CODE(&overload,1);
}else
{
GEI_BUTTON_CODE(&overload,0);
}
GEI_BUTTON_CODE(&key1,KEY1);
GEI_BUTTON_CODE(&key2,KEY2);
GEI_BUTTON_CODE(&key3,KEY3);