Решил освоить uCOS-II. Возникло пару вопросов в ключевых моментах.
1. В примере для АВР есть такие строки. Не пойму логики зачем это ?
OSTaskStkSize = OS_TASK_IDLE_STK_SIZE; // ? OSTaskStkSizeHard = OS_TASK_IDLE_STK_SIZE_HARD; // ? OSInit();
2. Где правильнее всего инициализировать МК ? Перед OSInit(), перед OSStart() или гдето в потоке ?
3. Когда разрешать прерывания ? Как только запустил тиковый таймер ?
4. Как корректно вызвать OSTimeTick() ? В доке написано так: void OSTickISR(void) { Сохранить регистры процессора; Вызов OSIntEnter() или непосредственное увеличение OSIntNesting; Вызов OSTimeTick(); Вызов OSIntExit(); Восстановление регистров процессора; Выполнение команды возврата из прерывания; } Меня интересует какие функции вызывать для сохранения и востановления регистров. В примере этот участок кода на асме и вызываются макросы. А если я на Си пишу обработчик ?
Поделитесь проектиком тестовым плиз кто нить. Чтобы эти вопросы просмотреть.
|