int main(void) { char msg[20]; HAL_Init(); Nucleo_BSP_Init(); /* Before we can access to every register of the PWR peripheral we must enable it */ __HAL_RCC_PWR_CLK_ENABLE(); while (1) { if(__HAL_PWR_GET_FLAG(PWR_FLAG_SB)) { /* If standby flag set in PWR->CSR, then the reset is generated from * the exit of the standby mode */ sprintf(msg, "RESET after STANDBY mode\r\n"); HAL_UART_Transmit(&huart2, (uint8_t*)msg, strlen(msg), HAL_MAX_DELAY); /* We have to explicitly clear the flag */ __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU|PWR_FLAG_SB); } sprintf(msg, "MCU in run mode\r\n"); HAL_UART_Transmit(&huart2, (uint8_t*)msg, strlen(msg), HAL_MAX_DELAY); while(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13) == GPIO_PIN_SET) { HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin); HAL_Delay(100); } HAL_Delay(200); sprintf(msg, "Entering in SLEEP mode\r\n"); HAL_UART_Transmit(&huart2, (uint8_t*)msg, strlen(msg), HAL_MAX_DELAY); SleepMode(); sprintf(msg, "Exiting from SLEEP mode\r\n"); HAL_UART_Transmit(&huart2, (uint8_t*)msg, strlen(msg), HAL_MAX_DELAY); while(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13) == GPIO_PIN_SET); HAL_Delay(200); sprintf(msg, "Entering in STOP mode\r\n"); HAL_UART_Transmit(&huart2, (uint8_t*)msg, strlen(msg), HAL_MAX_DELAY); StopMode(); sprintf(msg, "Exiting from STOP mode\r\n"); HAL_UART_Transmit(&huart2, (uint8_t*)msg, strlen(msg), HAL_MAX_DELAY); while(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13) == GPIO_PIN_SET); HAL_Delay(200); sprintf(msg, "Entering in STANDBY mode\r\n"); HAL_UART_Transmit(&huart2, (uint8_t*)msg, strlen(msg), HAL_MAX_DELAY); StandbyMode(); while(1); //Never arrives here, since MCU is reset when exiting from STANDBY } }
int main(void) { int i=5000; uint8_t ultrasoundEnableFlag; uint16_t voltage; /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* Configure the system clock */ SystemClock_Config_8MHz(); //__HAL_RCC_PWR_CLK_ENABLE(); /* Initialize all configured peripherals */ MX_GPIO_Init(); HAL_GPIO_WritePin( DCDC_EN_GPIO_Port , DCDC_EN_Pin , 0); // HAL_GPIO_WritePin( DCDC_PWR_GPIO_Port , DCDC_PWR_Pin , 0 ); //open drain kimenet,pch fet, MX_ADC_Init(); //MX_I2C1_Init(); //MX_TIM3_Init(); MX_USART1_UART_Init(); GPIO_TIM3_OFF(); //HAL_Delay(100); MX_RTC_Init(); /* Enable Power Clock */ //__HAL_RCC_PWR_CLK_ENABLE(); uartTester(); // GPIO_TIM3_OFF(); //Feszültseg ellenörzése,sippogás----------------------------------------------------- voltage=voltage_read(ADC_CHANNEL_2,2); if(Full<voltage) batteryLevel=3; if(Medium < voltage && voltage<= Full) batteryLevel=2; if(Medium >= voltage) batteryLevel=1; HAL_Delay(1000); beeps(batteryLevel,1); PutString("Software version 2016.07.26.\n"); PutString("batteryLevel: "); PutNumber(batteryLevel); PutString("\n"); while(1){ //Feszültseg ellenörzése, paraméterek beállítása,fesz fvében------------------------ voltage=voltage_read(ADC_CHANNEL_2,2); if(Low > voltage){ if(UltraLow > voltage){ voltage=voltage_read(ADC_CHANNEL_2,2); if(UltraLow > voltage){ HAL_GPIO_WritePin( DCDC_PWR_GPIO_Port , DCDC_PWR_Pin , 1 ); //open drain kimenet,pch fet, HAL_PWR_EnterSTANDBYMode(); } } ultrasoundEnableFlag=0; sleepNum=LowVoltSleep; }else{ ultrasoundEnableFlag=1; sleepNum= linear(sleepNumMax,sleepNumMin, voltageMin,voltageMax,voltage); soundNum= linear(soundNumMin,soundNumMax,voltageMin,voltageMax,voltage); sounDelay=sDelay; } PutString("sleepNum"); PutNumber(sleepNum); PutString("\n"); PutString("soundNum"); PutNumber(soundNum); PutString("\n"); //Ultrahang generálás--------------------------------------------------------------- if(ultrasoundEnableFlag){ PutString("ultrasound(1)\n "); ultrasound(1); } //Sleep----------------------------------------------------------------------------- // HAL_ADC_MspDeInit(&hadc); HAL_Delay(10); PutString("sleep!\n"); HAL_NVIC_SetPriority(RTC_IRQn, 0, 0); HAL_NVIC_EnableIRQ(RTC_IRQn); for(uint8_t e=0 ; e < sleepNum ; e++){ HAL_RTC_GetTime(&hrtc,&sTim,RTC_FORMAT_BIN); HAL_RTC_GetDate(&hrtc, &sDat, RTC_FORMAT_BIN); HAL_RTC_GetTime(&hrtc,&sTim,RTC_FORMAT_BIN); HAL_RTC_GetDate(&hrtc, &sDat, RTC_FORMAT_BIN); PutNumber((uint32_t)sTim.Hours); PutString(":"); PutNumber((uint32_t)sTim.Minutes); PutString(":"); PutNumber((uint32_t)sTim.Seconds); PutString("\n"); if(sTim.Minutes==59){ sAlarm.AlarmTime.Minutes=0; if(sTim.Hours==23){ sAlarm.AlarmTime.Hours=0; }else{ sAlarm.AlarmTime.Hours=sTim.Hours+1; } }else{ sAlarm.AlarmTime.Minutes=sTim.Minutes+1; sAlarm.AlarmTime.Hours=sTim.Hours; } HAL_RTC_SetAlarm_IT(&hrtc, &sAlarm, FORMAT_BIN); PutString("alarm: "); PutNumber((uint32_t)sAlarm.AlarmTime.Hours); PutString(":"); PutNumber((uint32_t)sAlarm.AlarmTime.Minutes); PutString(":"); PutNumber((uint32_t)sAlarm.AlarmTime.Seconds); PutString("\n"); SleepMode(); } HAL_NVIC_DisableIRQ(RTC_IRQn); } }