Цитата(WHALE @ Apr 4 2013, 17:12)

На тестовом проекте при включении scmRTOS_CONTEXT_SWITCH_USER_HOOK_ENABLE 1 прерывания USART1 обрабатываются,в боевом проекте все равно нет.
Сравните конфигурации проектов (scmRTOS_CONFIG.h).
Цитата(WHALE @ Apr 4 2013, 17:12)

Хотя они точно возникают,но программа не аходит в обработчики прерываний.
Откуда это известно?
Обработчики-то есть в программе?
Цитата(WHALE @ Apr 4 2013, 17:12)

Ладно, попытался включить прямую передачу управления #define scmRTOS_CONTEXT_SWITCH_SCHEME 0 -
не компилируется вовсе, линкер в ассемблерном файле OS_Target_asm.s90 не видит определения os_context_switcher и os_context_switch_hook.
Что линкеру их обоих надо? Сомнительно как-то...
Или os_context_switch_hook - это context_switch_
user_hook? Тогда в конфиге задайте
Код
#define scmRTOS_CONTEXT_SWITCH_USER_HOOK_ENABLE 0
Или определите хук в своём коде. Только зачем он вам...
Цитата(WHALE @ Apr 4 2013, 17:12)

Короче, все плохо.
Думаю, проблема у вас также с файлом OS_Target_asm.s90 - макросы scmRTOS_CONTEXT_SWITCH_SCHEME и другие не доходят до ассемблера, и возможно получается так, что в случае с прямой передачей линкер не может найти os_context_switcher и выдаёт ошибку, а в случае переключения через прерывание не линкует os_context_switch_hook и заменяет его на RETI (попробуйте убрать галку в настройках проекта которая заполняет неиспользуемые прерывания командой возврата - выскочит ошибки линкера?).
Наверное нужно задать в настройках проекта пути к файлам конфигурации или прописать в OS_Target_asm.s90 что-то типа такого:
Цитата
#include "<полный путь к файлу>\scmRTOS_CONFIG.h"
#include "<полный путь к файлу>\scmRTOS_TARGET_CFG.h"