Power Voltage Detector Kesmesi tetiklenmiyor.

Başlatan isoment01, 09 Nisan 2020, 21:38:12

isoment01

Arkadaşlar STM32F4 işlemci ve discovery eval bordu kullanıyorum. Elektrik kesilince son bilgiyi hafızaya kaydetmek istedim. Kodlarım düzgün çalışmıyor bi kaç kez doğru sonuç alabildim hafızada. Genelde interrupt tetiklenmiyor. Bu arada 2.9V'ün üzerine çıkınca çalışıyor. "PWR_PVD_MODE_IT_FALLING" i "RISING" yapınca enerji verdiğimde o kesmeye girdiğini görüyorum VDD 3V çünkü. Bu iş üzerine çalışan varsa yardımcı olabilir mi ?
void HAL_PWR_PVDCallback(void)
{
  /* NOTE : This function Should not be modified, when the callback is needed,
            the HAL_PWR_PVDCallback could be implemented in the user file
   */
	/* TO DO: DO EEPROM OPERATIONS */

	USER_Flash_Write(INDEX_0, value, sizeof(value), DATA_TYPE_8);

	//USER_Flash_EraseSector();
}

/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */
  sConfigPVD.Mode= PWR_PVD_MODE_IT_FALLING;
  sConfigPVD.PVDLevel= PWR_PVDLEVEL_7; //2.9Volts
  HAL_PWR_ConfigPVD(&sConfigPVD);
  HAL_PWR_EnablePVD();
  USER_Flash_SetSectorAddrs(SECTOR_11, SECTOR_11_START_ADDR);
  USER_Flash_Read(INDEX_0, TestRead, sizeof(TestRead), DATA_TYPE_8);
  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_DMA_Init();
  MX_ADC1_Init();
  MX_TIM2_Init();
  MX_USART1_UART_Init();
  MX_CAN1_Init();
  /* USER CODE BEGIN 2 */


  USER_CAN_FilterConfig();
  SIM_VelocityTransferFunctionInit(); // TO DO: Define Return State for Function.
  HAL_ADC_Start_DMA(&hadc1, (uint32_t*) &ConversionArray, sizeof(ConversionArray));
  HAL_TIM_Base_Start(&htim2);
  HAL_UART_Receive_DMA(&huart1, (uint8_t*)&TouchScreenRxData, sizeof(TouchScreenRxData));
  USER_CAN_Start(&hcan1);

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {

    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}