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了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章