剛入手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了。