kinetis 的配套工具越来越好用,越来越完善。今天试了下KSDK2.0和Pins Tool工具。
KSDK的下载过程不再赘述,Pins Tool可以在
http://www.nxp.com/zh-Hans/products/software-and-tools/run-time-software/kinetis-software-and-tools/development-platforms-with-mbed/software-development-kit-for-kinetis-mcus:KINETIS-SDK?code=KINETIS-SDK&nodeId=0152109D3F1E8C1EF7&fpsp=1&tab=Design_Tools_Tab 下载,这是一个用来进行管脚分配的图形化配置工具。
这里以FRDM_KL26为例,oardsfrdmkl26zdriver_examplesuartpolling 这是一个UART polling传输的工程,打开工程可知,它使用的uart1,即PTE0和PTE1脚
void BOARD_InitPins(void)
{
CLOCK_EnableClock(kCLOCK_PortE);
PORT_SetPinMux(PORTE, 0U, kPORT_MuxAlt3);
PORT_SetPinMux(PORTE, 1U, kPORT_MuxAlt3);
}
如果要看到实现现象,还得将该两个脚引出,接到USB转UART上,才能在电脑上调试。
下面做一个简单的小实验,完成的功能是将UART1 换到UART0(PTA1,PTA2)上。
我们可以使用Pin Tools进行配置,在我的电脑安装完Pin Tools后,出现了如下不能打开的现象,
后来我将我电脑中的该文件弄到该路径下(这个路径需要自己手动建立以下),
就可以打开了。(如果你的电脑里了没有java环境jdk1.8,需要自己安装下)
打开之后,配置也是十分简单,
配置完选择File->Export 就可以保存生成pin_mux.h 和pin_mux.c 文件,将其对原来工程的文件做个替换就可以。
除了pinmux配置之外,还需要做的两处改动如下:
1). 重新定义DEMO_UART
#define DEMO_UART (UART_Type *)UART0
2). UART_Init 函数的重新调用,需要UART_Init() 函数其实对应KL26的UART1和UART2,因为这里是UART0,选择fsl_lpsci.c里的函数进行调用,另外UART0的时钟来源也不同,UART1和UART2为bus clock,而UART0有好几个选择,因此在初始化前,需要配置始终来源
// UART_Init(DEMO_UART, &config, CLOCK_GetFreq(DEMO_UART_CLKSRC));
CLOCK_SetLpsci0Clock(1); // UART clock source select
LPSCI_Init(DEMO_UART, &config, CLOCK_GetFreq(kCLOCK_CoreSysClk));// uart0 init
uart_init() 和LPSCI_Init() 函数这两个有一个重要的区别,在初始化函数里,实参有个地方不同
CLOCK_EnableClock(s_uartClock[UART_GetInstance(base)]);
CLOCK_EnableClock(s_lpsciClock[LPSCI_GetInstance(base)]);
这样就可以用板载的虚拟串口显示了。