刚入手NXP S32K144这个开发板,很不习惯。官方有它的IDE,S32DS。但本人习惯用keil,所以在官网下载了S32K144的PACK,直接就在keil上面开发了,但遇到很多问题吧。这里就不一一说了。这次主要是说我初始化串口0作为和电脑的信息交互,但在把官方的例程移植过来用的时候,添加分散加载文件,和库的路径,添加相应的.c文件,编译没有问题
![](213)
#include "stdio.h"
#include "s32k_conf.h"
#include "timer.h"
char mybuffer[]="nice to meet you!
";
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
");
}
}
但是在 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了。