Перейти к содержанию
    

сопоставление вектора и функции обработки

Здравствуйте, в чем ошибка?

 

(среда - IAR EWARM 7.10, чип - STM32F103C6)

 

 

__irq  void USART1IRQ(void);  //объявляю свою функцию обработки прерывания
//*********
__irq void USART1IRQ(void)
{
......
}
//*********
void main(void)
{
//вписываю адрес функции обработки в соответствующий вектор
  *(unsigned long*)0xd4=(unsigned long)USART1IRQ;    //0xd4 - адрес вектора USART1

  while(1);
}

компилируется без вопросов, но не работает

Изменено пользователем IgorKossak
[codebox] для длинного кода, [code] - для короткого!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Странный код. Вы точно хотите писать адреса обработчиков в рантайме? Если да, то смотрите, как писать флэш в даташите. И кстати возможно будет много проще выделить область в ОЗУ для таблицы векторов и перенастроить туда VTOR...

 

Если все же нет (как в 99,99% случаев), то вам надо при линковке создать таблицу векторов прерываний и разместить ее по адресу начала флэша. Как это сделать - читайте доку к IAR EWARM, я с ним не сталкивался...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Включите в проект файл "startup_stm32f10x_cl.s" (или другой, если я ошибся с принадлежностью Вашего контроллера этому семейству).

Там все вектора уже объявлены. И посмотрите примеры, идут в комплекте с IAR. Скачайте CMSIS, посмотрите примеры оттуда.

Это если нужно стандартное решение.

Ну а куда может завести Ваш метод, боюсь даже предполагать.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...