void Interrupt_Button_Config (void) { GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; /* Enable the BUTTON Clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); /* Configure Button pin as input */ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_Init(GPIOA, &GPIO_InitStructure); /* Connect Button EXTI Line to Button GPIO Pin */ // SYSCFG_EXTILineConfig(BUTTON_PORT_SOURCE[Button], BUTTON_PIN_SOURCE[Button]); /* Configure Button EXTI line */ EXTI_DeInit(); EXTI_InitStructure.EXTI_Line = EXTI_Line0; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); /* Enable and set Button EXTI Interrupt to the lowest priority */ NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); }
void cpu_deinit_all() { //** ADC_DeInit(LPC_ADC); CAN_DeInit(LPC_CAN1); CAN_DeInit(LPC_CAN2); EMAC_DeInit(); EXTI_DeInit(); I2C_DeInit(LPC_I2C0); I2C_DeInit(LPC_I2C1); I2C_DeInit(LPC_I2C2); I2S_DeInit(LPC_I2S); NVIC_DeInit(); NVIC_SCBDeInit(); PWM_DeInit(LPC_PWM1); QEI_DeInit(LPC_QEI); //** RIT_DeInit(LPC_RIT); RTC_DeInit(LPC_RTC); SPI_DeInit(LPC_SPI); SSP_DeInit(LPC_SSP0); SSP_DeInit(LPC_SSP1); UART_DeInit(LPC_UART0); UART_DeInit((LPC_UART_TypeDef *) LPC_UART1); //** UART_DeInit(LPC_UART2); //** UART_DeInit(LPC_UART3); TIM_DeInit(LPC_TIM0); TIM_DeInit(LPC_TIM1); //** TIM_DeInit(LPC_TIM2); //** TIM_DeInit(LPC_TIM3); }
void EXTI_INIT(void) { EXTI_DeInit(); EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC, EXTI_SENSITIVITY_RISE_FALL); EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOB, EXTI_SENSITIVITY_RISE_FALL); }
void gpio_irq_free(gpio_irq_t *obj) { // Disable EXTI line NVIC_ClearPendingIRQ(obj->irq_n); EXTI_DeInit(); pin_function(obj->pin, WIZ_PIN_DATA(WIZ_MODE_INPUT, WIZ_GPIO_NOPULL, 0)); obj->event = EDGE_NONE; }
void HAL_Interrupts_Suspend(void) { exti_saved_state.imr = EXTI->IMR; exti_saved_state.emr = EXTI->EMR; exti_saved_state.rtsr = EXTI->RTSR; exti_saved_state.ftsr = EXTI->FTSR; EXTI_DeInit(); }
/******************** - 传感器IO中断设置 *********************/ void SENSOR_EXTI_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; // RCC_APB2PeriphResetCmd(RCC_APB2Periph_AFIO, ENABLE); // RCC_APB2PeriphResetCmd(RCC_APB2Periph_AFIO,DISABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO, ENABLE);//PB1 ACCER_INT2 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//PA6 GYRO_DR NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); GPIO_ResetBits(GPIOB, GPIO_Pin_1); GPIO_ResetBits(GPIOA, GPIO_Pin_6); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;//PB1 ACCER_INT2 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;//PA6 GYRO_DR GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); EXTI_DeInit(); GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource1); GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource6); EXTI_InitStructure.EXTI_Line = EXTI_Line1;//参考手册9.2.5节 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); EXTI_InitStructure.EXTI_Line = EXTI_Line6;//参考手册9.2.5节 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); EXTI_GenerateSWInterrupt(EXTI_Line1); EXTI_GenerateSWInterrupt(EXTI_Line6); }
/** * @brief Configures RTC Interrupts * @param None * @retval : None */ void RTC_NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; EXTI_DeInit(); /* Configure one bit for preemption priority */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); /* Enable the RTC Interrupt */ NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); /* Enable the EXTI Line17 Interrupt */ EXTI_ClearITPendingBit(EXTI_Line17); EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Line = EXTI_Line17; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); /* Enable the RTC Alarm Interrupt */ NVIC_InitStructure.NVIC_IRQChannel = RTCAlarm_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); EXTI_ClearITPendingBit(EXTI_Line16 ); EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Line = EXTI_Line16; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = PVD_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_Init(&NVIC_InitStructure); /* Enable the TIM2 global Interrupt */ NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); }
// init exti line 0 (PA0 - user button) //============================================================================== static void init( void ) { GPIO_InitTypeDef gpio_init; EXTI_InitTypeDef exti_init; NVIC_InitTypeDef nvic_init; // create semaphore to implement delayed interrupt service vSemaphoreCreateBinary( exti_0_semaphor ); if( !exti_0_semaphor ) hardware_fail(); // reset the EXTI peripheral registers to their default reset values EXTI_DeInit(); // fills each gpio_init fields with its default value GPIO_StructInit( &gpio_init ); // fills each exti_init fields with its reset value EXTI_StructInit( &exti_init ); // enable GPIOA and AFIO clock RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE ); // configure PA0 as input floating gpio_init.GPIO_Pin = GPIO_Pin_0; gpio_init.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init( GPIOA, &gpio_init ); // connect PA0 to EXTI line 0 GPIO_EXTILineConfig( GPIO_PortSourceGPIOA, GPIO_PinSource0 ); // configure EXTI line 0 exti_init.EXTI_Line = EXTI_Line0; exti_init.EXTI_Mode = EXTI_Mode_Interrupt; exti_init.EXTI_Trigger = EXTI_Trigger_Rising; exti_init.EXTI_LineCmd = ENABLE; EXTI_Init( &exti_init ); // enable EXTI line 0 interrupt // preemption priority: 12 or 0xcf > configMAX_SYSCALL_INTERRUPT_PRIORITY, // so we can use FreeRTOS API inside interrupt handler // sub priority: we don't use sub priority, look to main.c nvic_init.NVIC_IRQChannel = EXTI0_IRQn; nvic_init.NVIC_IRQChannelPreemptionPriority = 12; nvic_init.NVIC_IRQChannelSubPriority = 0; nvic_init.NVIC_IRQChannelCmd = ENABLE; NVIC_Init( &nvic_init ); }
void TSC_EXTI_Configuration(void) { EXTI_DeInit(); //GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource4); GPIO_EXTILineConfig(GPIO_PortSourceGPIOD, GPIO_PinSource13); EXTI_InitTypeDef EXTI_InitStruct; //EXTI_InitStruct.EXTI_Line = EXTI_Line4; EXTI_InitStruct.EXTI_Line = EXTI_Line13; EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStruct.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStruct); //EXTI_ClearITPendingBit(EXTI_Line4); EXTI_ClearITPendingBit(EXTI_Line13); }
int main() { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //初始化管脚 NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); //选择中断优先级分组,此处选择0。使0级抢占式优先级,16级亚优先级 NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn; //相应的通道配置,此处选择中断通道 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //抢占式优先级配置 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //亚优先级配置 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //时能通道 NVIC_Init(&NVIC_InitStructure); //使用结构体完成配置 GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); PAout(9)=1; //初始化PA09输出高电平,灭灯 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOD,&GPIO_InitStructure); //初始化PD02输入,浮空 GPIO_EXTILineConfig(GPIO_PortSourceGPIOD, GPIO_PinSource2); //配置中断源 EXTI_DeInit(); EXTI_InitTypeDef EXTI_InitStructure; EXTI_InitStructure.EXTI_Line = EXTI_Line2; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); //配置中断下降沿触发 while(1) { delay(500); } return 0; }
void cnc_joystick_init(){ GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; uint8_t i; GPIO_StructInit(&GPIO_InitStructure); for( i = 0; i < 8; i++){ /* Enable the BUTTON Clock */ RCC_AHB1PeriphClockCmd(JOYSTICK_BUTTON_CLK[i], ENABLE); /* Configure Button pin as input */ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_Pin = JOYSTICK_BUTTON_PIN[i]; GPIO_Init(JOYSTICK_BUTTON_PORT[i], &GPIO_InitStructure); } #if INTERRUPT_MODE RCC_AHB1PeriphClockCmd(JOYSTICK_INTERRUPT_CLK, ENABLE); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_Pin = JOYSTICK_INTERRUPT_PIN; GPIO_Init(JOYSTICK_INTERRUPT_PORT, &GPIO_InitStructure); RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); SYSCFG_EXTILineConfig(JOYSTICK_EXTI_PORT, JOYSTICK_EXTI_PIN); EXTI_DeInit(); EXTI_StructInit(&EXTI_InitStructure); EXTI_InitStructure.EXTI_Line = JOYSTICK_EXTI_LINE; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_Init(&EXTI_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = JOYSTICK_EXTI_IRQ; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 7; //Because of FreeRTOS NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); #endif }
/** * @brief Configure on/off pin interrupt * @param None * @retval None * This initialiser function assumes the clocks and gpio have been configured */ void EXTI_ONOFF_EN(void) { EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; EXTI_DeInit(); /* Connect EXTI0 Line to PA.0 pin - WKUP*/ GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); /* Configure EXTI0 line */ EXTI_InitStructure.EXTI_Line = EXTI_Line0; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; if(USB_SOURCE==bootsource) //If we booted from USB, disconnect gives -ive pulse EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; else EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); /* Enable and set EXTI0 Interrupt to the lowest priority */ NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; //The WKUP triggered interrupt NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01;//Lower pre-emption priority NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x07; //lowest group priority NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); }
//============================================================================== // Sleep 設定 (EUP) //============================================================================== void F_Sleep_Init(void) { F_AllLCDRam(0); F_Display(); F_1625CS_1(0); F_1625WR(0); F_1625DATA(0); F_BackLight(0); F_IncControlUp(0); F_IncControlDown(0); F_EUP_EEPROM_GPIO(); // EUP //M_ERP_SetHigh; M_ERP_SetLow; EXTI_Config(); F_ERP_KBSet(); /* Request to enter STOP mode with regulator in low power mode */ PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI); EXTI_DeInit(); IWDG_Config(0); }
/** * @brief Save Demonstration context (GPIOs Configurations, peripherals,...). * @param None * @retval None */ void IDD_Measurement_SaveContext(void) { GPIO_InitTypeDef GPIO_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; /* Deinitialize all peripherals used in the Demo */ DAC_DeInit(); ADC_DeInit(ADC1); DMA_DeInit(DMA1_Channel2); SPI_DeInit(SPI1); TIM_DeInit(TIM2); EXTI_DeInit(); TIM_DeInit(TIM6); LCD_DeInit(); SYSCFG_DeInit(); I2C_DeInit(I2C1); COMP_DeInit(); GPIOA_MODER = GPIOA->MODER; GPIOB_MODER = GPIOB->MODER; GPIOC_MODER = GPIOC->MODER; GPIOD_MODER = GPIOD->MODER; GPIOE_MODER = GPIOE->MODER; GPIOH_MODER = GPIOH->MODER; GPIOA_PUPDR = GPIOA->PUPDR; GPIOB_PUPDR = GPIOB->PUPDR; GPIOC_PUPDR = GPIOC->PUPDR; GPIOD_PUPDR = GPIOD->PUPDR; GPIOE_PUPDR = GPIOE->PUPDR; GPIOH_PUPDR = GPIOH->PUPDR; /* Configure all GPIO port pins in Analog Input mode */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_Init(GPIOD, &GPIO_InitStructure); GPIO_Init(GPIOE, &GPIO_InitStructure); GPIO_Init(GPIOH, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = IDD_CNT_EN_PIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(IDD_CNT_EN_GPIO_PORT, &GPIO_InitStructure); /* Configure IDD_CNT_EN pin as output push-pull ----------------------------*/ GPIO_SetBits(IDD_CNT_EN_GPIO_PORT, IDD_CNT_EN_PIN); /* Connect Button EXTI Line to Button GPIO Pin */ SYSCFG_EXTILineConfig(IDD_WAKEUP_EXTI_PORTSOURCE, IDD_WAKEUP_EXTI_PINSOURCE); /* Configure IDD_WAKEUP pin as input pull-down -----------------------------*/ GPIO_InitStructure.GPIO_Pin = IDD_WAKEUP_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(IDD_WAKEUP_GPIO_PORT, &GPIO_InitStructure); /* Configure the IDD_WAKEUP EXTI Line */ EXTI_ClearITPendingBit(IDD_WAKEUP_EXTI_LINE); EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Line = IDD_WAKEUP_EXTI_LINE; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); /* Enable the EXTI Interrupt */ NVIC_InitStructure.NVIC_IRQChannel = IDD_WAKEUP_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); }
void main(void) { //CFG->GCR |= 0x01; //disable swim pin /* Configure the Fcpu to DIV1*/ CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1); /* select Clock = 16 MHz */ CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1); /* Configure the system clock to use HSI clock source and to run at 16Mhz */ CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSI, DISABLE, CLK_CURRENTCLOCKSTATE_DISABLE); CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); CLK_HSICmd(ENABLE); FLASH_Config(); EXTI_DeInit(); //You should add: // Define FLASH programming time //FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD); //optbyte1 = FLASH_ReadOptionByte(0x4803); //255 by def //optbyte2 = FLASH_ReadOptionByte(0x4804); //255 by def /* if (optbyte != 765) { FLASH_Unlock(FLASH_MEMTYPE_DATA); // unlock data memory by passing the RASS key in the proper order FLASH_ProgramOptionByte(0x4803, 0xFD); // byte OPT2 resides at address x4803, write a 1 to bit 7. This will also write to the NOPT2 complement byte FLASH_Lock(FLASH_MEMTYPE_DATA); // re-lock data memory } */ //General purpose timer TIM4_Config(); #ifdef DFS_90 HotAir_Config(); #endif #ifndef DFS_90 GPIO_Init(CONTROL_GPIO_PORT, CONTROL_GPIO_PIN, GPIO_MODE_OUT_PP_LOW_FAST); #endif Temperature_ADC_Config(); STM_EVAL_SEGInit(SEG1); STM_EVAL_SEGInit(SEG2); STM_EVAL_SEGInit(SEG3); STM_EVAL_LEDInit(LEDA); STM_EVAL_LEDInit(LEDB); STM_EVAL_LEDInit(LEDC); STM_EVAL_LEDInit(LEDD); STM_EVAL_LEDInit(LEDE); STM_EVAL_LEDInit(LEDF); STM_EVAL_LEDInit(LEDG); STM_EVAL_LEDInit(LEDP); #ifndef SOLDERING_VAR2 //STM_EVAL_LEDInit(LEDP); #endif // STM_EVAL_SEGOn(SEG1); // STM_EVAL_SEGOn(SEG2); // STM_EVAL_SEGOn(SEG3); // // STM_EVAL_LEDOn(LEDA); // STM_EVAL_LEDOn(LEDB); // STM_EVAL_LEDOn(LEDC); // STM_EVAL_LEDOn(LEDD); // STM_EVAL_LEDOn(LEDE); // STM_EVAL_LEDOn(LEDF); // STM_EVAL_LEDOn(LEDG); // // STM_EVAL_LEDOff(LEDA); // STM_EVAL_LEDOff(LEDB); // STM_EVAL_LEDOff(LEDC); // STM_EVAL_LEDOff(LEDD); // STM_EVAL_LEDOff(LEDE); // STM_EVAL_LEDOff(LEDF); // STM_EVAL_LEDOff(LEDG); // STM_EVAL_LEDOff(LEDP); // // STM_EVAL_SEGOff(SEG1); // STM_EVAL_SEGOff(SEG2); // STM_EVAL_SEGOff(SEG3); //STM_EVAL_LEDOn(LEDP); //GPIO_Init(ENC_DN_BUTTON_PORT, ENC_DN_BUTTON_PIN, GPIO_MODE_IN_PU_NO_IT); //GPIO_Init(ENC_UP_BUTTON_PORT, ENC_UP_BUTTON_PIN, GPIO_MODE_IN_PU_NO_IT); STM_EVAL_PBInit(BUTTON_KEY, BUTTON_MODE_GPIO); STM_EVAL_PBInit(BUTTON_UP, BUTTON_MODE_GPIO); STM_EVAL_PBInit(BUTTON_DOWN, BUTTON_MODE_GPIO); STM_EVAL_PBInit(BUTTON_REED, BUTTON_MODE_GPIO); ssegInit(); ssegWriteStr("1.0.1", 5, SEG1); enableInterrupts(); #ifdef DFS_90 HotAir_Main(); #endif #ifdef SOLDERING_HAKKO_A1321 Soldering_Main(); #endif while(1) { /* #if 0 for (level = 0; level < calUpperLimit; level +=5) { Delayms(1); } for (level = calUpperLimit; level > 0; level -=5) { Delayms(1); } #else RawData = GetAdcValue(ADC_SOLDER_TEMP_CHANNEL); SmoothData = SmoothData - (LPF_Beta * (SmoothData - RawData)); level = ((int)SmoothData)*26; #endif */ } }
void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; // Port A output GPIO_InitStructure.GPIO_Pin = WIZ_SCS; #ifdef __DEF_W5200__ GPIO_InitStructure.GPIO_Pin |= LED3 | LED4; #endif GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_SetBits(GPIOA, WIZ_SCS); #ifdef __DEF_W5200__ GPIO_SetBits(GPIOA, LED3); // led off GPIO_SetBits(GPIOA, LED4); // led off #endif // Configure the GPIO ports( USART1 Transmit and Receive Lines) // Configure the USART1_Tx as Alternate function Push-Pull GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Pin = USART1_TX; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); // Configure the USART1_Rx as input floating GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Pin = USART1_RX; GPIO_Init(GPIOA, &GPIO_InitStructure); // SPI 1 /* Configure SPI pins: SCK, MISO and MOSI */ GPIO_InitStructure.GPIO_Pin = WIZ_SCLK | WIZ_MISO | WIZ_MOSI; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); // Port B GPIO_InitStructure.GPIO_Pin = WIZ_RESET | WIZ_PWDN; #ifdef __DEF_W7200__ GPIO_InitStructure.GPIO_Pin |= LED3 | LED4; #endif GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_SetBits(GPIOB, WIZ_RESET); GPIO_ResetBits(GPIOB, WIZ_PWDN); #ifdef __DEF_W7200__ GPIO_SetBits(GPIOB, LED3); // led off GPIO_SetBits(GPIOB, LED4); // led off #endif // WIZ Interrupt GPIO_InitStructure.GPIO_Pin = WIZ_INT; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; #ifdef __DEF_W5200__ GPIO_Init(GPIOB, &GPIO_InitStructure); #endif #ifdef __DEF_W7200__ GPIO_Init(GPIOC, &GPIO_InitStructure); #endif EXTI_DeInit(); GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource0); EXTI_InitStructure.EXTI_Line = EXTI_Line0; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); //EXTI_GenerateSWInterrupt(EXTI_Line0); EXTI_IMR_EMR_enable(); }
/** * @brief Deinitializes the EXTI peripheral registers to their default * reset values. * @param None * @retval None */ void GL_EXTI_DeInit(void) { EXTI_DeInit(); }