diff --git a/doc/STM32.txt b/doc/STM32.txt index df01477..bcd4818 100644 --- a/doc/STM32.txt +++ b/doc/STM32.txt @@ -1,7 +1,7 @@  Компилятор языка программирования Oberon-07/16 для микроконтроллеров STM32 Cortex-M3. ------------------------------------------------------------------------------- +------------------------------------------------------------------------------ Параметры командной строки Вход - текстовые файлы модулей с расширением ".ob07", кодировка ANSI или @@ -13,8 +13,8 @@ UTF-8 с BOM-сигнатурой. 3) необязательные параметры-ключи -out имя результирующего файла; по умолчанию, совпадает с именем главного модуля, но с расширением ".hex" - -ram размер ОЗУ в килобайтах (16 - 65536) по умолчанию 16 - -rom размер ПЗУ в килобайтах (4 - 65536) по умолчанию 4 + -ram размер ОЗУ в килобайтах (4 - 65536) по умолчанию 4 + -rom размер ПЗУ в килобайтах (16 - 65536) по умолчанию 16 -nochk <"ptibcwra"> отключить проверки при выполнении параметр -nochk задается в виде строки из символов: @@ -291,7 +291,7 @@ Oberon-реализациях выполнение такой операции PROCEDURE [code] WFI 0BF30H; (* wfi *) - Компилятор автоматически добавляет к такой процедуре команду возврата + Компилятор автоматически добавляет к такой процедуре команду возврата (bx LR). Способ передачи параметров и результата не изменяется. Регистр LR, при входе в процедуру не сохраняется. @@ -323,14 +323,26 @@ TYPE Обработка прерываний При возникновении прерывания, будет вызвана специальная процедура RTL._int. -RTL._int передает адрес вектора прерывания в пользовательский обработчик. +RTL._int передает в пользовательский обработчик смещение вектора прерывания +(относительно начала таблицы векторов): + +смещение вектор +---------------------- + 0H начальное значение SP + 4H сброс + ... + 0ECH TIM6 + 0F0H TIM7 + ... + + Обработчик должен определить источник прерывания по полученому значению и выполнить соответствующие действия. Пользовательский обработчик должен иметь вид: PROCEDURE handler (iv: INTEGER) - где iv - адрес вектора возникшего прерывания. + где iv - смещение вектора возникшего прерывания. Чтобы назначить обработчик, следует вызвать процедуру RTL.SetInt: