Beispiel #1
0
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
  }
}
Beispiel #2
0
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);

	
	}			

}