msp430f1611 中断向量偏移
/******************************************************************************
******* 函 数 名 :
******* 描 述 : 中断向量列表映射
******* 入 口 参 数 :
******* 出 口 参 数 :
******* 影 响 资 源 :
******* 备 注 :
******************************************************************************/
#pragma vector = DACDMA_VECTOR
__interrupt void DACDMA(void)
{
asm(" br &0xE7E0;");
}
#pragma vector = PORT2_VECTOR
__interrupt void PORT2(void)
{
asm(" br &0xE7E2;");
}
#pragma vector = USART1TX_VECTOR
__interrupt void USART1TX(void)
{
asm(" br &0xE7E4;");
}
#pragma vector = USART1RX_VECTOR
__interrupt void USART1RX(void)
{
asm(" br &0xE7E6;");
}
#pragma vector = PORT1_VECTOR
__interrupt void PORT1(void)
{
asm(" br &0xE7E8;");
}
#pragma vector = TIMERA1_VECTOR
__interrupt void TIMERA1(void)
{
asm(" br &0xE7EA;");
}
#pragma vector = TIMERA0_VECTOR
__interrupt void TIMERA0(void)
{
asm(" br &0xE7EC;");
}
#pragma vector = ADC12_VECTOR
__interrupt void ADC12(void)
{
asm(" br &0xE7EE;");
}
#pragma vector = USART0TX_VECTOR
__interrupt void USART0TX(void)
{
asm(" br &0xE7F0;");
}
#pragma vector = USART0RX_VECTOR
__interrupt void USART0RX(void)
{
asm(" br &0xE7F2;");
}
#pragma vector = WDT_VECTOR
__interrupt void WDT(void)
{
asm(" br &0xE7F4;");
}
#pragma vector = COMPARATORA_VECTOR
__interrupt void COMPARATORA(void)
{
asm(" br &0xE7F6;");
}
#pragma vector = TIMERB1_VECTOR
__interrupt void TIMERB1(void)
{
asm(" br &0xE7F8;");
}
#pragma vector = TIMERB0_VECTOR
__interrupt void TIMERB0(void)
{
asm(" br &0xE7FA;");
}
#pragma vector = NMI_VECTOR
__interrupt void NMI(void)
{
asm(" br &0xE7FC;");
}
//BOOTLOADER 不做任何处理
//#pragma vector = RESET_VECTOR
//__interrupt void RESET(void)
//{
// ;
//}
void UserCode(void)
{
asm(" mov &0xe7fe, PC;");
}
msp430f1611 boot中断向量设置
下面是应用程序lnk文件,主要修改INTVEC RESET
// ************************************************
//
// XLINK configuration file for MSP430F1611
//
// Copyright 1996-2015 IAR Systems AB.
//
// See the file 430/doc/licenses/IARSourceLicense.txt for detailed
// license information.
//
// $Revision: $
//
// ************************************************
// ---------------------------------------------------------
// Description
//
//
// Usage:
//
// xlink [file file ...] -f lnk430f1611.xcl
//
// -----------------------------------------------
// Device summary
//
//
// Core: MSP430
//
// Interrupt vectors: 16
//
// Peripheral units: 0-01FF
//
// Information memory (FLASH): 1000-10FF
//
// Read/write memory (RAM): 1100-38FF
//
// Read-only memory (FLASH): 4000-FFFF
//
// -----------------------------------------------
// Segments
//
// -------------------------------------
// Data read/write segments (RAM)
//
//
// segment Usage
// ------- --------------------------
// DATA16_Z Data initialized to zero
// DATA16_I Data initialized by copying from DATA16_ID
// DATA16_N Data defined using __no_init
// DATA16_HEAP The heap used by 'malloc' and 'free'
// CSTACK Runtime stack
// TLS16_I Thread-local storage for main thread
//
// -------------------------------------
// Program and data read-only segments (FLASH)
//
//
// segment Usage
// ------- --------------------------
// DATA16_C Constant data, including string literals
// DATA16_ID Initializers for DATA<nn>_I
// INFO Information memory
// INFOA Information memory, bank A
// INFOB Information memory, bank B
// CSTART Program startup code
// CODE Program code
// ISR_CODE Program code for interrupt service routines
// DIFUNCT Dynamic initialization vector used by C++
// CHECKSUM Checksum byte(s) generated by the -J option
// INTVEC Interrupt vectors
// RESET The reset vector
// TLS16_ID Thread-local initializers for main thread
//
// Notes:
//
// * The INFOx and INFO segments overlap, this allows data either to be
// placed in a specific bank or anywhere in the info memory.
//
// * The INTVEC and RESET segments overlap. This allows an application to
// either use the reset vector provided by the runtime library, or
// provide a reset function by defining an interrupt function associated
// with the reset vector.
//
// ---------------------------------------------------------
// Configuation
//
// -----------------------------------------------
// Stack and heap sizes
//
// Uncomment for command line use
//-D_STACK_SIZE=80
//-D_DATA16_HEAP_SIZE=80
// -----------------------------------------------
// Define cpu
//
-cmsp430
// -----------------------------------------------
// Support for placing functions in read/write memory
//
-QCODE_I=CODE_ID
// -----------------------------------------------
// Support for thread local storage
//
-QTLS16_I=TLS16_ID
// -----------------------------------------------
// Hardware multiplier location
//
-D__iar_HWMUL=130
// ---------------------------------------------------------
// Placement directives
//
// -----------------------------------------------
// Information memory
//
-Z(CONST)INFO=1000-10FF
-Z(CONST)INFOA=1080-10FF
-Z(CONST)INFOB=1000-107F
// -----------------------------------------------
// RAM memory
//
-Z(DATA)DATA16_I,DATA16_Z,DATA16_N,TLS16_I=1100-38FF
-Z(DATA)DATA16_HEAP+_DATA16_HEAP_SIZE
-Z(DATA)CODE_I
-Z(DATA)CSTACK+_STACK_SIZE#
// -----------------------------------------------
// Read-only memory
//
// -------------------------------------
// Constant data
//
-Z(CONST)CHECKSUM,DATA16_C,DATA16_ID,TLS16_ID,DIFUNCT=4000-E7DF
// -------------------------------------
// Code
//
-Z(CODE)CSTART,ISR_CODE,CODE_ID=4000-E7DF
-P(CODE)CODE=4000-E7DF
// -------------------------------------
// Interrupt vectors
//
-Z(CODE)INTVEC=E7E0-E7FF
-Z(CODE)RESET=E7FE-E7FF