S32K144在中断初始化函数跑飞的原因

  刚入手NXP S32K144这个开发板,很不习惯。官方有它的IDE,S32DS。但本人习惯用keil,所以在官网下载了S32K144的PACK,直接就在keil上面开发了,但遇到很多问题吧。这里就不一一说了。这次主要是说我初始化串口0作为和电脑的信息交互,但在把官方的例程移植过来用的时候,添加分散加载文件,和库的路径,添加相应的.c文件,编译没有问题

#include "stdio.h"
#include "s32k_conf.h"
#include "timer.h"

char mybuffer[]="nice to meet you!\n";
int main()
{
        //使能允许内核中断
    _DI();
    _EI();
    
    //初始化时钟
    sysinit();
    
    //引脚的初始化
  pinmuxinit();                
    
    //初始化系统函数
  Timer_init();
    
    //初始化串口0
    DebugUartInit();
    printf("test1");
    LPUART_DRV_SendData( 0U, (uint8_t *)mybuffer,sizeof(mybuffer));
    printf("test2");
    while(1)
    {
            Delayms(1000);
            printf("test\n\r");
    }

}

 

但是在 DebugUartInit();里面初始化串口0  LPUART_DRV_Init(0u, &lpuart0_State ,&lpuart0_InitConfig);

之后,就没有任何反应了,因为我的开发板也什么led灯等可以调试的,只能单步调试看看,发现在

 INT_SYS_InstallHandler(s_lpuartRxTxIrqId[instance], g_lpuartIsr[instance], (isr_t*) 0);程序就跑飞了。

后来,看了帖子出现跑飞的原因,一个一个测试,发现在分散加载文件中有这么一句

#if (defined(__ram_vector_table__))
  #define __ram_vector_table_size__    0x00000400
#else
  #define __ram_vector_table_size__    0x00000000
#endif

后来我定义了__ram_vector_table__,程序就ok了。

你可能感兴趣的:(S32K144在中断初始化函数跑飞的原因)