Обработчики прерываний К1887ВЕ3Т Keil

Модераторы: gurzzza, pip, _sva_

Ответить
frenele
Сообщения: 8
Зарегистрирован: 27 янв 2015, 14:51
Предприятие: "Океанприбор"
Откуда: Кировск, ленинградская обл.
Contact:

Обработчики прерываний К1887ВЕ3Т Keil

Сообщение frenele » 26 апр 2016, 17:52

Создал проект в Keil на микроконтроллере работает. :D Теперь задача написать любой обработчик прерывания, но не понятно где прописаны имена обработчиков прерываний. :? Смотрел файл "START167.A66", но не обнаружил. Для STM32 для меня всё понятно как писать оболочку обработчика прерываний. А вот для К1887ВЕ3Т непонятно. Помогите разобраться! Может какой пример скинете с работой прерываниями.

tvs
Сообщения: 9
Зарегистрирован: 27 апр 2016, 09:24

Re: Обработчики прерываний К1887ВЕ3Т Keil

Сообщение tvs » 27 апр 2016, 09:32

У Keil довольно неплохой Help, посмотрите там. Обработчикам прерываний Вы сами даете имена, для Keil важен только номер прерывания, что в Assembler, что в C.

Код: Выделить всё

void CAN_OUT_MSG(void) interrupt 0x66
{
    P3 = ~0x0066;
    printf("\n interrupt 0x66 CAN_OUT_MSG\n");
}

frenele
Сообщения: 8
Зарегистрирован: 27 янв 2015, 14:51
Предприятие: "Океанприбор"
Откуда: Кировск, ленинградская обл.
Contact:

Re: Обработчики прерываний К1887ВЕ3Т Keil

Сообщение frenele » 27 апр 2016, 10:35

То есть как я понял в строчке "void CAN_OUT_MSG(void) interrupt 0x66" и есть адрес вектора прерывания как если писать на Assembler. Спасибо посмотрю Help. Опыт в Keil у меня только любительский. Вот и осваиваю.

tvs
Сообщения: 9
Зарегистрирован: 27 апр 2016, 09:24

Re: Обработчики прерываний К1887ВЕ3Т Keil

Сообщение tvs » 27 апр 2016, 11:19

Нет, это номер прерывания, ни в коем случае не вектор.

frenele
Сообщения: 8
Зарегистрирован: 27 янв 2015, 14:51
Предприятие: "Океанприбор"
Откуда: Кировск, ленинградская обл.
Contact:

Re: Обработчики прерываний К1887ВЕ3Т Keil

Сообщение frenele » 27 апр 2016, 12:20

Спасибо я уже разобрался. Прерывания заработали. Да это порядковый номер прерывания.

void ASC0_Receive(void) interrupt 0x2B
{
P2 ^= 0x4000;
}

void ASC0_Transmit(void) interrupt 0x2A
{
tx_uart_byte('$');
}

Ответить

Вернуться в «Микроконтроллеры семейства Infineon C166»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость