Перейти к содержанию
    

STM32F407VGT выводит 1kHz на ногу PC13 при инициализации RTC

Всем привет!

Пробую включить HAL RTC из STM32Cube и получаю 1kHz на ноге. 

Была мыcль, что с этим как-то связан Tamper1 AF1, но он выключен, нога проинициализирована в GPIO_Output.

Эффект проявляется спонтанно, раз может включиться с этим "багом", а раз всё нормально - нога реагирует на команды GPIO.

В еррате ничего не нашёл что бы могло подходить к такому случаю....

Что ещё можно глянуть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 часов назад, Spider сказал:

Была мыcль, что с этим как-то связан Tamper1 AF1, но он выключен, нога проинициализирована в GPIO_Output.

RTC имеет приоритет над режимом порта.

12 часов назад, Spider сказал:

Что ещё можно глянуть?

Документацию :biggrin:

image.thumb.png.2d9c16a76bce282820e9ccc40e39f075.png

image.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Беда в том что он выключен... 
Ну и если на то пошло, почему оно спонтанно само включается ИНОГДА?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Беда в том что он выключен... 
Ну и если на то пошло, почему оно спонтанно само включается ИНОГДА?

Пробую разобраться. Имеем стандартный код инициализации от LSI 32kH

Spoiler

/**
  * @brief RTC Initialization Function
  * @param None
  * @retval None
  */
static void MX_RTC_Init(void)
{
  /* USER CODE BEGIN RTC_Init 0 */
  /* USER CODE END RTC_Init 0 */
  /* USER CODE BEGIN RTC_Init 1 */
  /* USER CODE END RTC_Init 1 */
  /** Initialize RTC Only
  */
  hrtc.Instance = RTC;
  hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
  hrtc.Init.AsynchPrediv = 127;
  hrtc.Init.SynchPrediv = 249;
  hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
  hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
  hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
  if (HAL_RTC_Init(&hrtc) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN RTC_Init 2 */
  /* USER CODE END RTC_Init 2 */
}

 

Вроде как hrtc.Init.OutPut = RTC_OUTPUT_DISABLE и это вроде как хорошо.
Идём далее. Внтури оно ещё вызывает HAL_RTC_MspInit(), где тоже "вроде" криминала нет.

Spoiler

/**
* @brief RTC MSP Initialization
* This function configures the hardware resources used in this example
* @param hrtc: RTC handle pointer
* @retval None
*/
void HAL_RTC_MspInit(RTC_HandleTypeDef* hrtc)
{
  RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
  if(hrtc->Instance==RTC)
  {
  /* USER CODE BEGIN RTC_MspInit 0 */

  /* USER CODE END RTC_MspInit 0 */

  /** Initializes the peripherals clock
  */
    PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC;
    PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSI;
    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
    {
      Error_Handler();
    }

    /* Peripheral clock enable */
    __HAL_RCC_RTC_ENABLE();
  /* USER CODE BEGIN RTC_MspInit 1 */

  /* USER CODE END RTC_MspInit 1 */
  }

}

 

Есть HAL_RCCEx_PeriphCLKConfig(), в которой оно много чего делает, но главное COE не трогает, да и вообще CR пишет только, чтобы снять блокировку с RTC.
Затем внутри HAL_RTC_Init() есть строка

    /* Set RTC_CR register */
    hrtc->Instance->CR |= (uint32_t)(hrtc->Init.HourFormat | hrtc->Init.OutPut | hrtc->Init.OutPutPolarity);

В которой hrtc->Init.OutPut всё же равен нолю и не должен взвести бит COE.

На всякий случай ещё посмотрим в отладку:

image.png.cae3350fe048aade15549bf45952bfa2.png

Вроде всё "красиво" и нет COE.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну если COE в нуле, а импульсы есть - где-то ваша программа ногой дергает. Ищите.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

То то и оно, что если не вызывать MX_RTC_Init(), то дёргать ногой моя программа перестаёт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чудес не бывает. Или COE не ноль, или дергает кто-то другой. Вы отладчиком COE смотрите когда импульсы на выходе поймали, надеюсь?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Конечно. То то и оно... причём я заметил, что если просто запустить без отладчика, то ещё ни разу не проявилось. Появляется, только когда я под отладкой

Кстати, поздравляю с 10001 постом :)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...