ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
19 мая
49582 Топик полностью
Tolik (26.01.2006 15:58, просмотров: 1) ответил Romario на если OS еще не стартовала (не инициализирована) зачем в ISR вызываются какие то OSINTExit() ?
Потому что обработчик преываний OS_CPU_IRQ_ISR уже привязан к вектору и обработка прерываний выполняется уже по правила OS. Я обрезал программу до минимума, когда понял что система валится после первой обработки прерывания от таймера. Но это не помогло, так как ядро оказалось в SYS моде. Восстановил пример и пытаюсь выполнять пошагово. OS стартует и переключается на первую задачу в которой происходит инициализация и запуск таймера. Пошагово успешно выполняю обработку прерывания от таймера где вызывается OSTimeTick, исправляю по ходу содержимое R4 чтобы выйти из функции обработки прерывания, и в конце концов вхожу в OS_TaskIdle и больше из нее никуда не выхожу, так как таймер живет своей жизнью, а прерывание больше не возникает (хотя брекпоинт там стоит и везде оно разрешено). В функции обработки прерывания от таймера написал две строчки, которые дергают ножку контролера. Пытаюсь запустить систему без остановок. На осциллографе вижу, что ножка дернулась 1 раз и система зависла. Останавливаю и вижу тотже адрес 0х00000004!