void SysTick_Configuration(void) { SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); SysTick_SetReload(9); SysTick_CounterCmd(SysTick_Counter_Enable); SysTick_ITConfig(ENABLE); }
void systime_initial(void) { /* SysTick end of count event each 10ms with input clock equal to 9MHz (HCLK/8, default) */ SysTick_SetReload(90000); /* Enable SysTick interrupt */ SysTick_ITConfig(ENABLE); SysTick_CounterCmd(SysTick_Counter_Enable); }
/* init System Ticker with 1ms ----------------------------------------------*/ void initSysTick() { // config for systick - delay SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK); SysTick_SetReload(72000); SysTick_ITConfig(ENABLE); SysTick_CounterCmd(SysTick_Counter_Enable); }
void SysTick_Configuration(void) { /* SysTick end of count event each 1ms with input clock equal to 9MHz (HCLK/8, default) */ SysTick_SetReload(9000); /* Enable SysTick interrupt */ SysTick_ITConfig(ENABLE); }
void SystickConfigure() { /* SysTick end of count event each 1ms with input clock equal to 9MHz (HCLK/8, default) */ SysTick_SetReload(9000); SysTick_ITConfig(ENABLE); SysTick_CounterCmd(SysTick_Counter_Enable); timer1 = 0; timer2 = 0; timerKW = 0; }
void SysTick_Configuration(void) { /* Configure HCLK clock as SysTick clock source */ SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK); SysTick_SetReload(72000); /* Enable the SysTick Interrupt */ SysTick_ITConfig(ENABLE); /* Enable the SysTick Counter */ SysTick_CounterCmd(SysTick_Counter_Enable); }
/******************************************************************************* * Function Name : SYSCLOCK_SetTimeSpan * Description : Set the timespan for the SYSTick Peripheral timer. * Input : timeSpan = Time span of the timer in micro seconds. * Output : None * Return : None *******************************************************************************/ void SYSCLOCK_SetTimeSpan(u32 timeSpan) { /* Disable the SysTick Counter */ /* SysTick_CounterCmd(SysTick_Counter_Disable); */ /* SysTick end of count event each 1ms with input clock equal to 9MHz (HCLK/8, default) */ SysTick_SetReload(9*timeSpan); /* Enable the SysTick Counter */ /* SysTick_CounterCmd(SysTick_Counter_Enable); */ }
/******************************************************************************* * Function Name : main. * Description : Main routine. * Input : None. * Output : None. * Return : None. *******************************************************************************/ int main(void) { #ifdef DEBUG debug(); #endif Set_System(); Set_USBClock(); USB_Config(); USB_Init(); InitialIO(); InitialADC(); #ifdef JOYSTICK SSD1303_Init(); InitialSSD1306_controller(); #endif InitialProcTask(); //WaitConfig(); InitialDevice(&dev,&SSD1303_Prop,SongSmall5_DrawChar); SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK); SysTick_SetReload(72000000/20); SysTick_CounterCmd(SysTick_Counter_Enable); SysTick_ITConfig(ENABLE); CurrentProcess = JoystickProcess; CurrentSystick = JoystickSystick; JoystickUIInit(); void HidProcess(void); while (1) { HidProcess(); continue; static u8 lastCamOn = 0; if(lastCamOn != bCameraOn) { if(bCameraOn) { CurrentProcess = TetrisProcess; CurrentSystick = TetrisSystick; TetrisUIInit(); } else { CurrentProcess = JoystickProcess; CurrentSystick = JoystickSystick; JoystickUIInit(); } } lastCamOn = bCameraOn; CurrentProcess(); } }
/******************************************************************************* * Function Name : delay_us * Description : * Input : - Nus: * Output : None * Return : None * Attention : *******************************************************************************/ void delay_us(u32 Nus) { SysTick_SetReload(delay_fac_us * Nus); SysTick_CounterCmd(SysTick_Counter_Clear); SysTick_CounterCmd(SysTick_Counter_Enable); do { Status = SysTick_GetFlagStatus(SysTick_FLAG_COUNT); }while (Status != SET); SysTick_CounterCmd(SysTick_Counter_Disable); SysTick_CounterCmd(SysTick_Counter_Clear); }
/******************************************************************************* * Function Name : delay_us * Description : 初始化延迟函数 * Input : - Nus: 延时us * Output : None * Return : None * Attention : 参数最大值为 0xffffff / (HCLK / 8000000) *******************************************************************************/ void delay_us(u32 Nus) { SysTick_SetReload(delay_fac_us * Nus); /* 时间加载 */ SysTick_CounterCmd(SysTick_Counter_Clear); /* 清空计数器 */ SysTick_CounterCmd(SysTick_Counter_Enable); /* 开始倒数 */ do { Status = SysTick_GetFlagStatus(SysTick_FLAG_COUNT); }while (Status != SET); /* 等待时间到达 */ SysTick_CounterCmd(SysTick_Counter_Disable); /* 关闭计数器 */ SysTick_CounterCmd(SysTick_Counter_Clear); /* 清空计数器 */ }
/* ******************************************************************************** ** 函数名称 : SysTick_Configuration(void) ** 函数功能 : 时钟初始化 ** 输 入 : 无 ** 输 出 : 无 ** 返 回 : 无 ******************************************************************************** */ static void SysTick_Configuration(void) { RCC_ClocksTypeDef rcc_clocks; u32 cnts; RCC_GetClocksFreq(&rcc_clocks); cnts = (u32)rcc_clocks.HCLK_Frequency/OS_TICKS_PER_SEC; SysTick_SetReload(cnts); SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK); SysTick_CounterCmd(SysTick_Counter_Enable); SysTick_ITConfig(ENABLE); }
/******************************************************************************* * Function Name : SysTick_Configuration * Description : Configures the SysTick to generate an interrupt each 1 millisecond. * Input : None * Output : None * Return : None *******************************************************************************/ void SysTick_Configuration(void) { /* Select AHB clock(HCLK) as SysTick clock source */ SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK); /* Set SysTick Priority to 3 */ NVIC_SystemHandlerPriorityConfig(SystemHandler_SysTick, 3, 0); /* SysTick interrupt each 1ms with HCLK equal to 72MHz */ SysTick_SetReload(72000); /* Enable the SysTick Interrupt */ SysTick_ITConfig(ENABLE); }
/******************************************************************************* * Function Name : delay_ms * Description : 初始化延迟函数 * Input : - nms: 延时ms * Output : None * Return : None * Attention : 参数最大值 nms<=0xffffff*8*1000/SYSCLK 对72M条件下,nms<=1864 *******************************************************************************/ void delay_ms(uint16_t nms) { uint32_t temp = delay_fac_ms * nms; if (temp > 0x00ffffff) { temp = 0x00ffffff; } SysTick_SetReload(temp); /* 时间加载 */ SysTick_CounterCmd(SysTick_Counter_Clear); /* 清空计数器 */ SysTick_CounterCmd(SysTick_Counter_Enable); /* 开始倒数 */ do { Status = SysTick_GetFlagStatus(SysTick_FLAG_COUNT); }while (Status != SET); /* 等待时间到达 */ SysTick_CounterCmd(SysTick_Counter_Disable); /* 关闭计数器 */ SysTick_CounterCmd(SysTick_Counter_Clear); /* 清空计数器 */ }
/******************************************************************************* * Function Name : delay_ms * Description : * Input : - nms: * Output : None * Return : None * Attention : *******************************************************************************/ void _delay_ms(uint16_t nms) { uint32_t temp = delay_fac_ms * nms; if (temp > 0x00ffffff) { temp = 0x00ffffff; } SysTick_SetReload(temp); SysTick_CounterCmd(SysTick_Counter_Clear); SysTick_CounterCmd(SysTick_Counter_Enable); do { Status = SysTick_GetFlagStatus(SysTick_FLAG_COUNT); }while (Status != SET); SysTick_CounterCmd(SysTick_Counter_Disable); SysTick_CounterCmd(SysTick_Counter_Clear); }
int main(void){ for(l=0;l<21;l++) bufferx[l]=buffery[l]=bufferz[l]=0; RCC_Management(); NVIC_Management(); SysTick_SetReload(9000);//calibration gia to eswteriko roloi tou Cortex M-3(max HCLK/8) SysTick_ITConfig(ENABLE);//energopoihsh twn interrupts MMA_Management(); LCDInit();//arxikopoihsh ths LCD(emepriexetai h arxikopoihsh ths SPI thyras) LCDContrast(0x45); TIM1_Management(); }
/******************************************************************************* * Function Name : main * Description : Main program. * Input : None * Output : None * Return : None *******************************************************************************/ int main(void) { #ifdef DEBUG debug(); #endif /* System Clocks Configuration */ RCC_Configuration(); /* Configure GPIO_LED pin 6, pin 7, pin 8 and pin 9 as Output push-pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIO_LED, &GPIO_InitStructure); /* Turn on Leds connected to GPIO_LED pin 6 and pin 8 */ GPIO_Write(GPIO_LED, GPIO_Pin_6 | GPIO_Pin_8); /* NVIC configuration */ NVIC_Configuration(); /* SysTick end of count event each 1ms with input clock equal to 9MHz (HCLK/8, default) */ SysTick_SetReload(9000); /* Enable SysTick interrupt */ SysTick_ITConfig(ENABLE); while (1) { /* Toggle leds connected to GPIO_LED pin 6, GPIO_LED pin 7, GPIO_LED pin 8 and GPIO_LED pin 9 pins */ GPIO_Write(GPIO_LED, (u16)~GPIO_ReadOutputData(GPIO_LED)); /* Insert 500 ms delay */ Delay(500); /* Toggle leds connected to GPIO_LED pin 6, pin 7, pin 8 and pin 9 */ GPIO_Write(GPIO_LED, (u16)~GPIO_ReadOutputData(GPIO_LED)); /* Insert 300 ms delay */ Delay(300); } }
/** * @brief delay_us * @param u32 Nus * @retval None */ void delay_us(u32 us) { uint32_t temp = delay_fac_us * us; int16_t tick = us/1864135; if (temp > 0x00ffffff) temp = 0x00ffffff; do { SysTick_SetReload(temp); SysTick_CounterCmd(SysTick_Counter_Clear); SysTick_CounterCmd(SysTick_Counter_Enable); do { Status = SysTick_GetFlagStatus(SysTick_FLAG_COUNT); } while ((Status != SET) && (ButtonPush == B_RESET)); SysTick_CounterCmd(SysTick_Counter_Disable); SysTick_CounterCmd(SysTick_Counter_Clear); } while((tick-- > 0) && (ButtonPush == B_RESET)); }
/** * @brief Main program. * @param None * @retval None */ int main(void) { char test[25]; unsigned int an1, an2, an3, an4, an5; float Ta=0; int i; long msum[4]; float fm[4], T1, T2, T3, SP; unsigned int DSState = 0; unsigned long DSTimer=0, t0, t1, dt, HTimer, TTimer, t_sec, t_min; unsigned char data[2]; unsigned char out=0; unsigned int decval; volatile float pp, pi, pd, f_error, error_old=0, pid_out, pid_out_i, pid_out_p, pid_out_d, error_i=0; u8 Send_Buffer[25]; u8 tmp[4]; //char no_windup = 0; RCC_Configuration(); NVIC_Configuration(); /* SysTick end of count event each 1ms with input clock equal to 9MHz (HCLK/8, default) */ SysTick_SetReload(9000); /* Enable SysTick interrupt */ SysTick_ITConfig(ENABLE); /* Enable the SysTick Counter */ SysTick_CounterCmd(SysTick_Counter_Enable); GPIO_Setup(); RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE); /* SPI2 Config -------------------------------------------------------------*/ SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; SPI_InitStructure.SPI_Mode = SPI_Mode_Master; SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256; SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; SPI_InitStructure.SPI_CRCPolynomial = 7; SPI_Init(SPI2, &SPI_InitStructure); /* Enable SPI1 */ SPI_CalculateCRC(SPI2, DISABLE); SPI_Cmd(SPI2, ENABLE); InitADC1(); // ADC1 Init OWInit(&OneWire, GPIOB, GPIO_Pin_8); /* Connect Key Button EXTI Line to Key Button GPIO Pin */ //GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_Pin_7); /* Configure Key Button EXTI Line to generate an interrupt on falling edge */ //EXTI_InitStructure.EXTI_Line = EXTI_Line7; //EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //EXTI_InitStructure.EXTI_LineCmd = ENABLE; //EXTI_Init(&EXTI_InitStructure); /* Time base configuration */ TIM_TimeBaseStructure.TIM_Period = 55000; TIM_TimeBaseStructure.TIM_Prescaler = 12; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); /* TIM2 PWM2 Mode configuration: Channel1 */ TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; TIM_OCInitStructure.TIM_Channel = TIM_Channel_1; TIM_OCInitStructure.TIM_Pulse = 1;//20000; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OCInit(TIM3, &TIM_OCInitStructure); /* TIM2 configuration in Input Capture Mode */ TIM_ICStructInit(&TIM_ICInitStructure); TIM_ICInitStructure.TIM_Channel = TIM_Channel_2; TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Falling; TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; TIM_ICInitStructure.TIM_ICFilter = 0; TIM_ICInit(TIM3, &TIM_ICInitStructure); /* One Pulse Mode selection */ TIM_SelectOnePulseMode(TIM3, TIM_OPMode_Single); /* Input Trigger selection */ TIM_SelectInputTrigger(TIM3, TIM_TS_TI2FP2); /* Slave Mode selection: Trigger Mode */ TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Trigger); ST7565_st7565_init(); ST7565_st7565_command(CMD_SET_BIAS_9); ST7565_st7565_command(CMD_DISPLAY_ON); ST7565_st7565_command(CMD_SET_ALLPTS_NORMAL); ST7565_st7565_set_brightness(0x0C); OWSearch(&OneWire, addr); /*sprintf(test, "%02X %02X %02X %02X %02X %02X %02X %02X", addr[7],addr[6], addr[5],addr[4], addr[3],addr[2], addr[1],addr[0]); ST7565_drawstring(6, 6, test); */ USB_Init(); ST7565_display(); // show splashscreen t0 = millis(); HTimer = millis(); TTimer = millis(); pp = 10; pi = 0; pd = 150; while(1) { msum[0] = 0; msum[1] = 0; msum[2] = 0; msum[3] = 0; for (i = 0; i < 1000; i++) { an1 = GetADC1Channel(ADC_Channel_1); an2 = GetADC1Channel(ADC_Channel_2); an3 = GetADC1Channel(ADC_Channel_3); an4 = GetADC1Channel(ADC_Channel_4); an5 = GetADC1Channel(ADC_Channel_5); msum[0] += an1; msum[1] += an3 - an2; msum[2] += an4 - an2; msum[3] += an5 - an2; //DelayuS(333); } SP = round((msum[0] / 1000.0) * (60.0 / 4096)) * 5; fm[1] = (msum[1] / 1000.0); fm[2] = (msum[2] / 1000.0) + 12; fm[3] = (msum[3] / 1000.0) - 7; T1 = (T1 + Ta + Dac2Dt(fm[1])) / 2; T2 = (T2 + Ta + Dac2Dt(fm[2])) / 2; T3 = (T3 + Ta + Dac2Dt(fm[3])) / 2; t1 = millis(); dt = t1 - t0; t0 = t1; if (millis() - HTimer > 1000) { f_error = SP - T2; //if (noerror_i += error; pid_out_p = pp * f_error; pid_out_i = pi * error_i; pid_out_d = pd * (f_error - error_old); pid_out = pid_out_p + pid_out_i + pid_out_d; error_old = f_error; //out = pid_out; if (pid_out > 99) { out = 99; } else if (pid_out < 0) { out = 0; } else { out = round(pid_out); } TIM_SetCompare1(TIM3, 55000-PowerValues[out]); HTimer += 1000; //error_old = 10; sprintf(test, "T1 : %5.1f E %5.1f ", T1, f_error); ST7565_drawstring(6, 0, test); sprintf(test, "T2 : %5.1f ", T2); ST7565_drawstring(6, 1, test); sprintf(test, "T3 : %5.1f ", T3); ST7565_drawstring(6, 2, test); sprintf(test, "SP : %5.1f P %6.1f ", SP, pid_out_p); ST7565_drawstring(6, 3, test); sprintf(test, "Ta : %5.1f I %6.1f ", Ta, pid_out_i); ST7565_drawstring(6, 4, test); sprintf(test, "dt : %5lu D %6.1f ", dt, pid_out_d); ST7565_drawstring(6, 5, test); sprintf(test, "out: %3u %% %6.1f ", out, pid_out); ST7565_drawstring(6, 6, test); t_sec = (millis() - TTimer) / 1000; t_min = floor(t_sec / 60); t_sec %= 60; Send_Buffer[0] = 0x07; decval = round(T1 * 100); memcpy(&Send_Buffer[1], &decval, 2); decval = round(T2 * 100); memcpy(&Send_Buffer[3], &decval, 2); decval = round(T3 * 100); memcpy(&Send_Buffer[5], &decval, 2); decval = round(SP * 100); memcpy(&Send_Buffer[7], &decval, 2); memcpy(&Send_Buffer[9], &out, 1); //sprintf(test, "%02X %02X %02X %02X ", Send_Buffer[1], Send_Buffer[2], Send_Buffer[3], Send_Buffer[4]); //ST7565_drawstring(6, 7, test); UserToPMABufferCopy(Send_Buffer, ENDP1_TXADDR, 9); SetEPTxCount(ENDP1, 9); SetEPTxValid(ENDP1); ST7565_display(); } if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 0) { TTimer = millis(); } //onewire switch (DSState){ case 0: OWReset(&OneWire); OWWrite(&OneWire, 0xCC); // skip ROM OWWrite(&OneWire, 0x44); // start conversion DSTimer = millis(); DSState++; break; case 1: if((millis() - DSTimer) >= 1000){ OWReset(&OneWire); OWSelect(&OneWire, addr); OWWrite(&OneWire, 0xBE); // Read Scratchpad data[0] = OWRead(&OneWire); data[1] = OWRead(&OneWire); Ta = ((data[1] << 8) | data[0]) / 16.0; DSState = 0; } break; } } }
/****************************************************************************** * Function Name : SysTick_Configuration * Description : None * Input : None * Output : None * Return : None ******************************************************************************/ void SysTick_Configuration(void) { SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK); SysTick_SetReload(72000); SysTick_ITConfig(ENABLE); }
int main (void) { unsigned long cnt; //unsigned char buf[6]; //unsigned char led_on=0; unsigned char pwr_sw; unsigned char sw_1; unsigned char sf_1; unsigned char sf_2; unsigned char sf_0; unsigned char pcm_dsd; unsigned char dsd64_128; /* SystemInit() is called by startup_stm32f10x.ld.s or you can use STM32F10X.s and call SetupClock() in here first */ /* SysTick event each 10 ms with input clock equal to 9MHz (HCLK/8) */ SysTick_SetReload(90000/2); /* Enable the SysTick Counter */ SysTick_CounterCmd(SysTick_Counter_Enable); /* Enable SysTick interrupt */ SysTick_ITConfig(ENABLE); GPIOA_Configure(); GPIOB_Configure(); //add_for_usart_in_the_main(); /* RESET USB */ GPIO_ResetBits(GPIOB, USB_RST_B6); Delay(10); GPIO_SetBits(GPIOB, USB_RST_B6); Delay(10); //printf(" main loop\n"); GPIO_ResetBits(GPIOA, ON_PWR_A11); /*ON_PWR*/ GPIO_SetBits(GPIOA, MUTE_A3); /*MUTE*/ GPIO_ResetBits(GPIOA, MUTE_RY_A9); /*MUTE_RY*/ GPIO_ResetBits(GPIOA, SEL_ANA_A8); /*SEL_ANA*/ state=USB_IN; current_event=INIT; current_state=IDLE_STATE; while(1) { Delay(2); sf_0 = GPIO_ReadInputDataBit(GPIOB,SF_0_B7); sf_1 = GPIO_ReadInputDataBit(GPIOB,SF_1_B8); sf_2 = GPIO_ReadInputDataBit(GPIOB,SF_2_B9); pcm_dsd = GPIO_ReadInputDataBit(GPIOB,PCM_DSD_B5); dsd64_128 = GPIO_ReadInputDataBit(GPIOA,DSD64_128_A2); state=get_state(); if(state != current_state ) { current_event=INIT; current_state=state; } switch(current_state) { case POWER_OFF: if(current_event==INIT) { dprint("power_off\n"); GPIO_SetBits(GPIOA, MUTE_A3); /*MUTE*/ GPIO_ResetBits(GPIOA, MUTE_RY_A9); /*MUTE_RY*/ EventTimeTick = TimeTick +10 ; current_event=EVENT1; } else if(current_event==EVENT1) { if(TimeTick > EventTimeTick) { GPIO_SetBits(GPIOA, ON_PWR_A11); /*ON_PWR*/ current_event=IDLE; } } else if(current_event == IDLE) { dprint("power_off - idle event\n"); } break; case USB_IN: if(current_event==INIT) { dprint("usb_in event0\n"); GPIO_SetBits(GPIOA, MUTE_RY_A9); /*MUTE_RY*/ GPIO_SetBits(GPIOA, MUTE_A3); /*MUTE*/ EventTimeTick = TimeTick +10 ; current_event=EVENT1; } else if(current_event==EVENT1) { dprint("usb_in event1\n"); if(TimeTick > EventTimeTick) { dprint("TimeTick_100m event1\n"); GPIO_ResetBits(GPIOA, SEL_ANA_A8); /*SEL_ANA*/ GPIO_ResetBits(GPIOA, ON_PWR_A11); /*ON_PWR*/ EventTimeTick = TimeTick + 10; current_event=EVENT2; } } else if(current_event ==EVENT2) { dprint("usb_in event2\n"); if(TimeTick > EventTimeTick) { dprint("TimeTick_100m event2\n"); GPIO_ResetBits(GPIOA, MUTE_A3); /*MUTE*/ current_event=IDLE; } } else if(current_event == IDLE) { dprint("usb in - idle event\n"); } break; case ANALOG_IN: if(current_event==INIT) { dprint("analog_in\n"); GPIO_SetBits(GPIOA, MUTE_RY_A9); /*MUTE_RY*/ GPIO_SetBits(GPIOA, MUTE_A3); /*MUTE*/ EventTimeTick = TimeTick +10 ; current_event=EVENT1; } else if(current_event==EVENT1) { dprint("analog event1\n"); if(TimeTick > EventTimeTick) { dprint("TimeTick_100m event1\n"); GPIO_SetBits(GPIOA, SEL_ANA_A8); /*SEL_ANA*/ GPIO_ResetBits(GPIOA, ON_PWR_A11); /*ON_PWR*/ EventTimeTick = TimeTick + 10; current_event=EVENT2; } } else if(current_event ==EVENT2) { dprint("analog event2\n"); if(TimeTick > EventTimeTick) { dprint("TimeTick_100m event2\n"); GPIO_ResetBits(GPIOA, MUTE_A3); /*MUTE*/ current_event=IDLE; } } else if(current_event == IDLE) { dprint("analog in - idle event\n"); } break; default: dprint("default\n"); break; } } }