Dima1060 0 13 августа, 2014 Опубликовано 13 августа, 2014 · Жалоба Здравствуйте! У меня в сгенерированном коде (в 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 */ } не будет ли каких о проблем если я инициализацию SDRAM тоже размещу в этой задаче или в другой? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
den_po 0 13 августа, 2014 Опубликовано 13 августа, 2014 (изменено) · Жалоба Главный вопрос, исходя из которого нужно выбирать: в какой момент доступ к памяти становится необходимым? Изменено 13 августа, 2014 пользователем den_po Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dima1060 0 13 августа, 2014 Опубликовано 13 августа, 2014 · Жалоба Главный вопрос, исходя из которого нужно выбирать: в какой момент доступ к памяти становится необходимым? после того как инициализирован USB и с компа пришли данные, которые надо записать в память Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться