/******************************************************************************* * Function Name : NMIException * Description : This function handles NMI exception. * Input : None * Output : None * Return : None *******************************************************************************/ void NMIException(void) { /* Toggle GPIO_LED pin 9 */ GPIO_WriteBit(GPIO_LED, GPIO_Pin_9, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIO_LED, GPIO_Pin_9))); }
int A1:: _digitalWrite() { return GPIO_ReadOutputDataBit(AD1); }
/******************************************************************************* * Function Name : main * Description : Main program * Input : None * Output : None * Return : None *******************************************************************************/ int main(void) { #ifdef DEBUG debug(); #endif /* Configure the system clocks */ RCC_Configuration(); /* Configure GPIOs */ GPIO_Configuration(); /* Configures the EXTI Lines */ EXTI_Configuration(); #ifdef VECT_TAB_RAM /* Set the Vector Table base location at 0x20000000 */ NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); #else /* VECT_TAB_FLASH */ /* Set the Vector Table base location at 0x08000000 */ NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0); #endif NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQChannel; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_Init(&NVIC_InitStructure); while (1) { if(LowPowerMode == 1) { LowPowerMode = 0; /* Toggle GPIO_LED pin 6 */ GPIO_WriteBit(GPIO_LED, GPIO_Pin_6, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIO_LED, GPIO_Pin_6))); #ifdef WFISLEEPONEXIT NVIC_SystemLPConfig(NVIC_LP_SLEEPONEXIT, ENABLE); #endif #ifdef WFISLEEPNOW NVIC_SystemLPConfig(NVIC_LP_SLEEPONEXIT, DISABLE); __WFI(); #endif #ifdef WFESEVONPEND NVIC_SystemLPConfig(NVIC_LP_SEVONPEND, ENABLE); /* Boost the execution priority to 0: no further exception can be asserted */ NVIC_SETPRIMASK(); #ifdef RTC_Alarm_WFEWakeUp /* Set the RTC Alarm interrupt after 6s */ RTC_SetAlarm(0xFFFFFFFA); /* Wait until last write operation on RTC registers has finished */ RTC_WaitForLastTask(); /* Set the Counter to 0xFFFFFFF5 */ RTC_SetCounter(0xFFFFFFF5); /* Wait until last write operation on RTC registers has finished */ RTC_WaitForLastTask(); #endif __WFE(); #endif #ifdef WFESEVONEVENT NVIC_SystemLPConfig(NVIC_LP_SEVONPEND, DISABLE); #ifdef RTC_Alarm_WFEWakeUp /* Set the RTC Alarm interrupt after 6s */ RTC_SetAlarm(0xFFFFFFFA); /* Wait until last write operation on RTC registers has finished */ RTC_WaitForLastTask(); /* Set the Counter to 0xFFFFFFF5 */ RTC_SetCounter(0xFFFFFFF5); /* Wait until last write operation on RTC registers has finished */ RTC_WaitForLastTask(); #endif __WFE(); #endif } Delay(0xFFFFF); /* Toggle GPIO_LED pin 9 */ GPIO_WriteBit(GPIO_LED, GPIO_Pin_9, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIO_LED, GPIO_Pin_9))); } }
int GetOutputState(int outputNumber) { assert_param(IS_OUTPUT_ID_VALID(outputNumber)); uint8_t outputState; switch(outputNumber) { case OUTPUT_1: outputState = GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_1); break; case OUTPUT_2: outputState = GPIO_ReadOutputDataBit(GPIOE, GPIO_Pin_7); break; case OUTPUT_3: outputState = GPIO_ReadOutputDataBit(GPIOE, GPIO_Pin_9); break; case OUTPUT_4: outputState = GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_11); break; case OUTPUT_5: outputState = GPIO_ReadOutputDataBit(GPIOE, GPIO_Pin_15); break; case OUTPUT_6: outputState = GPIO_ReadOutputDataBit(GPIOE, GPIO_Pin_13); break; case OUTPUT_7: outputState = GPIO_ReadOutputDataBit(GPIOE, GPIO_Pin_11); break; case OUTPUT_8: outputState = GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_3); break; case OUTPUT_9: outputState = GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_0); break; case OUTPUT_10: outputState = GPIO_ReadOutputDataBit(GPIOD, GPIO_Pin_10); break; case OUTPUT_11: outputState = GPIO_ReadOutputDataBit(GPIOE, GPIO_Pin_8); break; case OUTPUT_12: outputState = GPIO_ReadOutputDataBit(GPIOE, GPIO_Pin_10); break; case OUTPUT_13: outputState = GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_10); break; case OUTPUT_14: outputState = GPIO_ReadOutputDataBit(GPIOE, GPIO_Pin_14); break; case OUTPUT_15: outputState = GPIO_ReadOutputDataBit(GPIOE, GPIO_Pin_12); break; case OUTPUT_16: outputState = GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_9); break; } if(outputState != 0) { return ON; } else { return OFF; } }
/******************************************************************************* * Function Name : SysTickHandler * Description : This function handles SysTick Handler. * Input : None * Output : None * Return : None *******************************************************************************/ void SysTickHandler(void) { __SVC(); /* Toggle GPIO_LED pin 6 */ GPIO_WriteBit(GPIO_LED, GPIO_Pin_6, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIO_LED, GPIO_Pin_6))); }
//------------------------------------------------------------------ void GPS_ANTENNA_status(void) // 天线开短路状态检测 { // 2013-4-20 更改PCB 用PD4 : GPS 天线开路 PB6 : GPS 天线短路 if(GPIO_ReadOutputDataBit(GPS_PWR_PORT, GPS_PWR_PIN )) // 在GPS 有电时有效 { if(GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_4))//开路检测 1:天线开路 { if(OutGPS_Flag==0) { if((Warn_Status[3]&0x20)==0) rt_kprintf("\r\n 检测到 天线开路"); Warn_Status[3]|=0x20; Warn_Status[3]&=~0x40; GpsStatus.Antenna_Flag=1; Gps_Exception.GPS_circuit_short_couter=0; } } else if(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_6))//短路检测 0:天线短路 { if(( Warn_Status[3]&0x40)==0) { Gps_Exception.GPS_short_keepTimer++; if( Gps_Exception.GPS_short_keepTimer>200) { Gps_Exception.GPS_short_keepTimer=0; // clear rt_kprintf("\r\n 检测到 天线短路"); rt_kprintf("\r\n 发现短路,立即断开GPS电源"); GPIO_ResetBits( GPS_PWR_PORT, GPS_PWR_PIN ); //------------------------------------------ Gps_Exception.GPS_circuit_short_couter++; if(Gps_Exception.GPS_circuit_short_couter>=4) { Gps_Exception.GPS_short_checkFlag=2; Gps_Exception.GPS_short_timer=0; // clear rt_kprintf("\r\n 短路检测大于3次 ,一直断开GPS 电源\r\n"); // 断开 GPS 电源后,得启动 本地定时 ,否则人家说丢包.NND /* */ } else { Gps_Exception.GPS_short_checkFlag=1; } //----------------------------------------------------- // set flag Warn_Status[3]&=~0x20; Warn_Status[3]|=0x40; //------------------------------------------ } } } else { if(Warn_Status[3]&0x20) rt_kprintf("\r\n 检测到 天线恢复正常"); Warn_Status[3]&=~0x20; Warn_Status[3]&=~0x40; GpsStatus.Antenna_Flag=0; Gps_Exception.GPS_circuit_short_couter=0; } } }