IAR工作台向量表ARM CortexM4

时间:2017-03-29 06:36:28

标签: arm iar cortex-m

我正在使用IAR IDE(v7.71)在ARM CORTEX M4处理器上开发固件。

在IAR工作台中创建项目时,启动代码和向量表位于汇编文件中。但我想将矢量表从.S文件更改为.C文件。

在现有项目中,.s文件中的向量表如下:

        SECTION CSTACK:DATA:NOROOT(3)

        SECTION .intvec:CODE:NOROOT(2)

        EXTERN  __iar_program_start
        PUBLIC  __vector_table

        DATA

__iar_init$$done:               ; The vector table is not needed
                                ; until after copy initialization is done

__vector_table
        DCD     sfe(CSTACK)
        DCD     __iar_program_start

        DCD     NMI_Handler
        DCD     HardFault_Handler
        DCD     MemManage_Handler
        DCD     BusFault_Handler
        DCD     UsageFault_Handler
        DCD     0
        DCD     0
        DCD     0
        DCD     0
        DCD     SVC_Handler
        DCD     DebugMon_Handler
        DCD     0
        DCD     PendSV_Handler
        DCD     SysTick_Handler
        ; External Interrupts        
        DCD     user_interrupt_Handler

这个fiel被带有向量表的cfile替换如下:

typedef void (* exc_ptr_t)(void);

#pragma section = "CSTACK"

#pragma location = ".intvec"
__root exc_ptr_t user_vect_table[25] = 
{
    (exc_ptr_t)__sfe("CSTACK"),
    __iar_program_start,    
    NMI_Handler,
    HardFault_Handler,
    MemManage_Handler,
    BusFault_Handler,
    UsageFault_Handler,
    (exc_ptr_t)0xFFFFFFFF,
    (exc_ptr_t)0xFFFFFFFF,
    (exc_ptr_t)0xFFFFFFFF,
    (exc_ptr_t)0xFFFFFFFF,
    SVC_Handler,
    DebugMon_Handler,
    (exc_ptr_t)0xFFFFFFFF,
    PendSV_Handler,
    SysTick_Handler,

    user_interrupt_Handler
};

在c文件中,以下语句给出了编译错误,表达式必须是常量值。

  

(exc_ptr_t)__ SFE(" CSTACK&#34)

如何在向量表中分配CSTACK?这样做的正确方法是什么? 在.icf文件中,CSTACK块声明为对齐8,大小为0x1000。

0 个答案:

没有答案