void adc1_2_irq_handler(void){ uint16_t new_value; ADC_ClearITPendingBit(ADC1, ADC_IT_JEOC); new_value = ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_1); if(adc_delay_count == 0) adc_filtered = new_value; else adc_filtered = ((adc_filtered * 3) + new_value) >> 2; if(adc_delay_count > 5){ if(adc_rising){ if(adc_filtered > adc_level + 100){ if(adc_count < 3){ adc_count++; }else{ LED_ORANGE_TOGGLE(); ADC_ExternalTrigInjectedConvCmd(ADC1, DISABLE); pwm_trig_led=0; if(adc_comm) comm_tim_set_next_comm(); } } }else{ if(adc_filtered < adc_level){ if(adc_count < 3){ adc_count++; }else{ LED_ORANGE_TOGGLE(); ADC_ExternalTrigInjectedConvCmd(ADC1, DISABLE); pwm_trig_led=0; if(adc_comm) comm_tim_set_next_comm(); } } } }else{ adc_delay_count++; } }
void tim2_irq_handler(void){ u16 last_capture_lsb = TIM_GetCapture1(TIM2); u16 last_capture_msb = TIM_GetCapture1(TIM3); u16 tim_freq_lsb; u16 tim_freq_msb; if (TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET){ TIM_ClearITPendingBit(TIM2, TIM_IT_CC1); tim_freq_lsb = tim_freq & 0xFFFF; tim_freq_msb = tim_freq >> 16; TIM_SetCompare1(TIM2, last_capture_lsb + tim_freq_lsb); TIM_SetCompare1(TIM3, last_capture_msb + tim_freq_msb); if(tim_freq_msb == 0){ TIM_ITConfig(TIM3, TIM_IT_CC1, DISABLE); TIM_ITConfig(TIM2, TIM_IT_CC1, ENABLE); }else{ TIM_ITConfig(TIM2, TIM_IT_CC1, DISABLE); TIM_ITConfig(TIM3, TIM_IT_CC1, ENABLE); } LED_ORANGE_TOGGLE(); }
void gprot_trigger_output(void *data) { data = data; LED_ORANGE_TOGGLE(); usart_enable_send(); }