打印
[ZLG-MCU]

IAR SIGNAL定义中断

[复制链接]
1968|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ATmega32L|  楼主 | 2008-3-3 19:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
typedef void (*TSIGNAL)(void);
#define VECTOR(A) ((A+4)*4)
#define SIGNAL(A)  void SIGNAL_##A(void);__root static const TSIGNAL SIGNAL_##A##_HANDER @ VECTOR(A)=SIGNAL_##A;void SIGNAL_##A(void)

#define SIG_MPU_FAULT       0    // The MPU fault handler 
#define SIG_BUS_FAULT       1    // The bus fault handler
#define SIG_USAGE_FAULT     2    // The usage fault handler
#define SIG_RESERVED0       3    // Reserved
#define SIG_RESERVED1       4    // Reserved
#define SIG_RESERVED2       5    // Reserved
#define SIG_RESERVED3       6    // Reserved
#define SIG_SVCCALL         7    // SVCall handler
#define SIG_DEBUG_MONITOR   8    // Debug monitor handler
#define SIG_RESERVED4       9    // Reserved
#define SIG_PENDSV          10    // The PendSV handler
#define SIG_SYSTICK         11    // The SysTick handler
#define SIG_GPIOA           12   // GPIO Port A
#define SIG_GPIOB           13   // GPIO Port B
#define SIG_GPIOC           14    // GPIO Port C
#define SIG_GPIOD           15    // GPIO Port D
#define SIG_GPIOE           16    // GPIO Port E
#define SIG_UART0           17    // UART0 Rx and Tx
#define SIG_UART1           18    // UART1 Rx and Tx
#define SIG_SSI             19    // SSI Rx and Tx
#define SIG_I2C             20    // I2C Master and Slave
#define SIG_PWM_FAULT       21    // PWM Fault
#define SIG_PWM_GENERATOR0  22    // PWM Generator 0
#define SIG_PWM_GENGRATOR1  23    // PWM Generator 1
#define SIG_PWM_GENGRATOR2  24    // PWM Generator 2
#define SIG_QUADRATURE_ENCODER   25 // Quadrature Encoder
#define SIG_ADC0            26    // ADC Sequence 0
#define SIG_ADC1            27    // ADC Sequence 1
#define SIG_ADC2            28    // ADC Sequence 2
#define SIG_ADC3            29    // ADC Sequence 3
#define SIG_ADC4            30    // Watchdog timer
#define SIG_TIMER0A         31    // Timer 0 subtimer A
#define SIG_TIMER0B         32    // Timer 0 subtimer B
#define SIG_TIMER1A         33    // Timer 1 subtimer A
#define SIG_TIMER1B         34    // Timer 1 subtimer B
#define SIG_TIMER2A         35    // Timer 2 subtimer A
#define SIG_TIMER2B         36    // Timer 2 subtimer B
#define SIG_COMPARATOR0     37    // Analog Comparator 0
#define SIG_COMPARATOR1     38    // Analog Comparator 1
#define SIG_COMPARATOR2     39    // Analog Comparator 2
#define SIG_SYSTEM_CONTROL  40    // System Control (PLL, OSC, BO)
#define SIG_FLASH_CONTROL   41    // FLASH Control
#define SIG_GPIOF           42    // GPIO Port F
#define SIG_GPIOG           43    // GPIO Port G
#define SIG_GPIOH           44    // GPIO Port H
#define SIG_UART2           45    // UART2 Rx and Tx
#define SIG_SSI1            46    // SSI1 Rx and Tx
#define SIG_TIMER3A         47    // Timer 3 subtimer A
#define SIG_TIMER3B         48    // Timer 3 subtimer B
#define SIG_I2C1            49    // I2C1 Master and Slave
#define SIG_QUADRATURE      50    // Quadrature Encoder 1
#define SIG_CAN0            51    // CAN0
#define SIG_CAN1            52    // CAN1
#define SIG_CAN2            53    // CAN2
#define SIG_ETHERET         54    // Ethernet
#define SIG_HIBERNATE       55    // Hibernate


相关帖子

沙发
hotpower| | 2008-3-6 15:35 | 只看该作者

总想着WINAVR~~~

使用特权

评论回复
板凳
ATmega32L|  楼主 | 2008-3-6 17:30 | 只看该作者

WinAVR中断写法实既方便,又好理解。

WinAVR中断写法实既方便,又好理解。

IARAVR我也用WINAVR的中断写法。


#ifndef __IAR_SIGNAL_H__
#define __IAR_SIGNAL_H__

#include <intrinsics.h>

#define sei() __enable_interrupt()
#define cli() __disable_interrupt()

#define _PRAGMA_STR(A) _Pragma(#A)
#define PRAGMA_STR(A) _PRAGMA_STR(A)
#define __VECTOR__(A) vector=A

#define SIGNAL(A)
PRAGMA_STR(__VECTOR__(A))
__interrupt void SIGNAL##_##A(void)

#define SIG_INTERRUPT0            INT0_vect
#define SIG_INTERRUPT1        INT1_vect    
#define SIG_OUTPUT_COMPARE2    TIMER2_COMP_vect    
#define SIG_OVERFLOW2            TIMER2_OVF_vect
#define SIG_INPUT_CAPTURE1    TIMER1_CAPT_vect     
#define SIG_OUTPUT_COMPARE1A    TIMER1_COMPA_vect        
#define SIG_OUTPUT_COMPARE1B    TIMER1_COMPB_vect
#define SIG_OVERFLOW1        TIMER1_OVF_vect            
#define SIG_OVERFLOW0        TIMER0_OVF_vect        
#define SIG_SPI            SPI_STC_vect
#define SIG_USART_RECV        USART_RXC_vect
#define SIG_UART_RECV        USART_RXC_vect
#define SIG_USART_DATA        USART_UDRE_vect
#define SIG_UART_DATA        USART_UDRE_vect
#define SIG_USART_TRANS        USART_TXC_vect
#define SIG_UART_TRANS        USART_TXC_vect
#define SIG_ADC            ADC_vect
#define SIG_EEPROM_READY    EE_RDY_vect    
#define SIG_COMPARATOR        ANA_COMP_vect        
#define SIG_2WIRE_SERIAL    TWI_vect
#define SIG_INTERRUPT2        INT2_vect
#define SIG_OUTPUT_COMPARE0    TIMER0_COMP_vect
#define SIG_SPM_READY        SPM_RDY_vect

#endif


使用特权

评论回复
地板
hotpower| | 2008-3-7 00:30 | 只看该作者

哈哈~~~这样玩惯IAR且没玩过gcc的人是迷糊的~~~

使用特权

评论回复
5
zlgmcu| | 2008-3-7 08:46 | 只看该作者

符号系统只是个习惯问题,但总原则应当是“入乡随俗”

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

144

主题

376

帖子

0

粉丝