У меня в сгенерированном коде (в STM32Cube) при долгой инициализации (например SDRAM инициализация с длинными задержками) возникает прерывание таймера, вызывается SysTick_Handler -> xPortSysTickHandler(); в этой функции программа намертво зависает (наверно из-за того что еще не создана ни одна задача и не запущен планировщик). С точки зрения RTOS, где правильнее делать такие длинные инициализации периферии?
например в том же сгенерированном коде инициализация USB сделана в задаче
Код
static void StartThread(void const * argument) {
/* init code for USB_DEVICE */
MX_USB_DEVICE_Init();
/* USER CODE BEGIN 5 */
/* Infinite loop */
for(;;)
{
osDelay(1);
}
/* USER CODE END 5 */
}
/* init code for USB_DEVICE */
MX_USB_DEVICE_Init();
/* USER CODE BEGIN 5 */
/* Infinite loop */
for(;;)
{
osDelay(1);
}
/* USER CODE END 5 */
}
не будет ли каких о проблем если я инициализацию SDRAM тоже размещу в этой задаче или в другой?