Имеется ли исчерпывающий список имен процедур обслуживания прерываний (ISR), в частности для msp430F5438A? Любая помощь будет оценена, спасибо.Каковы имена процедур обслуживания прерываний для микроконтроллеров серии msp430?
2
A
ответ
2
Функция подключена к вектору прерывания с #pragma vector=nr
или __attribute__((interrupt(nr)))
, в зависимости от используемого компилятора.
имя функции не имеет значения, только этот номер вектора.
Вы можете назвать функцию после аппаратного модуля (см. Ответ kfx для списка примеров), но имеет смысл называть его после фактической функции, которую вы назначили той части оборудования (например, red_button_gpio_interrupt()
вместо этого от port1_interrupt()
).
2
Копирование-вставка оттуда:
/************************************************************
* Interrupt Vectors (offset from 0xFF80)
************************************************************/
#define RTC_VECTOR (0x0052) /* 0xFFD2 RTC */
#define PORT2_VECTOR (0x0054) /* 0xFFD4 Port 2 */
#define USCI_B3_VECTOR (0x0056) /* 0xFFD6 USCI B3 Receive/Transmit */
#define USCI_A3_VECTOR (0x0058) /* 0xFFD8 USCI A3 Receive/Transmit */
#define USCI_B1_VECTOR (0x005A) /* 0xFFDA USCI B1 Receive/Transmit */
#define USCI_A1_VECTOR (0x005C) /* 0xFFDC USCI A1 Receive/Transmit */
#define PORT1_VECTOR (0x005E) /* 0xFFDE Port 1 */
#define TIMER1_A1_VECTOR (0x0060) /* 0xFFE0 Timer1_A3 CC1-2, TA1 */
#define TIMER1_A0_VECTOR (0x0062) /* 0xFFE2 Timer1_A3 CC0 */
#define DMA_VECTOR (0x0064) /* 0xFFE4 DMA */
#define USCI_B2_VECTOR (0x0066) /* 0xFFE6 USCI B2 Receive/Transmit */
#define USCI_A2_VECTOR (0x0068) /* 0xFFE8 USCI A2 Receive/Transmit */
#define TIMER0_A1_VECTOR (0x006A) /* 0xFFEA Timer0_A5 CC1-4, TA */
#define TIMER0_A0_VECTOR (0x006C) /* 0xFFEC Timer0_A5 CC0 */
#define ADC12_VECTOR (0x006E) /* 0xFFEE ADC */
#define USCI_B0_VECTOR (0x0070) /* 0xFFF0 USCI B0 Receive/Transmit */
#define USCI_A0_VECTOR (0x0072) /* 0xFFF2 USCI A0 Receive/Transmit */
#define WDT_VECTOR (0x0074) /* 0xFFF4 Watchdog Timer */
#define TIMER0_B1_VECTOR (0x0076) /* 0xFFF6 Timer0_B7 CC1-6, TB */
#define TIMER0_B0_VECTOR (0x0078) /* 0xFFF8 Timer0_B7 CC0 */
#define UNMI_VECTOR (0x007A) /* 0xFFFA User Non-maskable */
#define SYSNMI_VECTOR (0x007C) /* 0xFFFC System Non-maskable */
#define RESET_VECTOR (0x007E) /* 0xFFFE Reset [Highest Priority] */
Спасибо! В отношении того же вопроса, что означает '#pragma vector = TIMERA0_VECTOR' '__interrupt void Timer_A (void)'? –
@EuegevHaoeiyv Это похоже на синтаксис компилятора IAR для определения процедуры обслуживания прерываний под названием 'Timer_A', которая будет обрабатывать прерывание TIMERA0_VECTOR (за исключением того, что его тело отсутствует). – kfx