Jump to content

    

Tsibulnick

Участник
  • Content Count

    5
  • Joined

  • Last visited

Community Reputation

0 Обычный

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array
  1. Ошибки нет. Просто перефирия при остановленной отладке продолжает работать и генерить прерывания. Если надо пошагово отлаживать с остановкой переферии, то это надо указать процессору для конкретной переферии в регистрах DBGMCU->APB1FZ, DBGMCU->APB2FZ.
  2. Действительно, немного протупил. Вектора прерываний объявлены как WEAK метки вида _interrupt_N. Но, чтобы прием сработал на ассемблере, необходимо метку сначала объявить видимой оператором public, например: public _interrupt_3. И о чудо, при сборке проекта в векторах прерывания появляется вектор на наш обработчик нарисованный на ASM, с меткой входа _interrupt_3:. Так что проблема решена.
  3. Пробовал в ASM вставлять метки типа _interrupt_3: или как на C AWU_vector: - результат полный игнор. Линкер вставляет в вектора прерываний заглушки, т.е. затирает таблицу векторами определенными в C файле.
  4. Суть проблемы: Есть обработчик прерывания написанный на ассемблере. Как прописать вектор прерывания на обработчик в ASM файле? В IAR трансляторе ассемблера для AVR можно было сделать так: NAME IntTable extern switch_int COMMON INTVEC(1) ORG TIMER0_OVF_vect JMP switch_int ENDMOD А вот под STM8 вектора прерывания вставляются перед векторами размещенными С компилятором по коду: section .intvec:CODE ;------------------------------------------------------------------------------- DS32 1;RESET DS32 1;TRAP DS32 1;NMI DC32 $82000000 + switch_int ......................... Или вектора прерываний затираются векторами определенными в С программе section .intvec:CODE:NOROOT(2) ;------------------------------------------------------------------------------- DS32 1;RESET DS32 1;TRAP DS32 1;NMI DC32 $82000000 + switch_int Сразу поясняю что нужно мне именно на ассемблере, т.к. это процедура переключения контентов в своей кооперативной ОС.
  5. В Keil это сделать просто. Заходим в опции проекта, выбираем вкладку Target и корректируем поля в Read/Only Memory Areas. Таким образом сообщаем Линковщику где можно использовать FLASH и по каким адресам.