Здравствуйте коты
Как при невозможности запуска RTC от низкочастотного внешнего (LSE) (часового кварца), перейти на работу от внутреннего LSI
Как я понял первая проверка при запуске контроллера в HAL осуществляется в void SystemClock_Config(void) и на невозможность тактов уходит в бесконечный цикл в Error_Handler();
Как назло в void SystemClock_Config(void) нет места для пользовательского кода /* USER CODE BEGIN 3 */
а отказываться от IDE и кода ею формируемого я не хочу (свой код я пишу только в предназначенных для этого местах)
я бы сделал так (опишу кратко): сконфигурировал с RCC_OscInitStruct.LSEState = RCC_LSE_ON;
если неудача то попробовал с RCC_OscInitStruct.LSIState = RCC_LSI_ON;
а зависать если ни один генератор не запустился
Как это сделать? IDE STM32CubeIDE плата BlackPill
Может в среде есть возможность поставить в нужном месте галочку всего то..
Идея возникла после того как плата с МК пришла с нерабочим LSE кварцем, я его заменил на другой, и чтобы предотвратить такое в дальнейшем, для и вообще для увеличения надёжности
поглядел код генерируемый IDE - там ещё различия(для LSE/LSI) в коде идут в void HAL_RTC_MspInit(RTC_HandleTypeDef* hrtc)
но там есть места для пользовательского кода и можно написать как надо
в догонку, а вот интересно, а можно ли в принципе несколько раз вызвать функции подобные HAL_RCC_OscConfig
в одни и те же регистры конфигурации (отвечающие за тактирование) писать разные значения подряд,
Сумбурно, но думаю поймёте что хотел спросить
Как при невозможности запуска RTC от низкочастотного внешнего (LSE) (часового кварца), перейти на работу от внутреннего LSI
Как я понял первая проверка при запуске контроллера в HAL осуществляется в void SystemClock_Config(void) и на невозможность тактов уходит в бесконечный цикл в Error_Handler();
Как назло в void SystemClock_Config(void) нет места для пользовательского кода /* USER CODE BEGIN 3 */
а отказываться от IDE и кода ею формируемого я не хочу (свой код я пишу только в предназначенных для этого местах)
я бы сделал так (опишу кратко): сконфигурировал с RCC_OscInitStruct.LSEState = RCC_LSE_ON;
если неудача то попробовал с RCC_OscInitStruct.LSIState = RCC_LSI_ON;
а зависать если ни один генератор не запустился
Как это сделать? IDE STM32CubeIDE плата BlackPill
Может в среде есть возможность поставить в нужном месте галочку всего то..
Идея возникла после того как плата с МК пришла с нерабочим LSE кварцем, я его заменил на другой, и чтобы предотвратить такое в дальнейшем, для и вообще для увеличения надёжности
поглядел код генерируемый IDE - там ещё различия(для LSE/LSI) в коде идут в void HAL_RTC_MspInit(RTC_HandleTypeDef* hrtc)
но там есть места для пользовательского кода и можно написать как надо
в догонку, а вот интересно, а можно ли в принципе несколько раз вызвать функции подобные HAL_RCC_OscConfig
в одни и те же регистры конфигурации (отвечающие за тактирование) писать разные значения подряд,
Сумбурно, но думаю поймёте что хотел спросить
