KW41Z只有一个低功耗串口LPUART0,根据数据手册可以路由至不同管脚;
根据FRDM-KW41Z原理图,LPUART0路由的是PCT6和PCT7两个管脚,且它连接到了板载OpenSDA上用于虚拟串口,另外还连接到了Arduino UNO R3标准接口的D0、D1;
使用MCUXpresso Config Tools可快速配置串口;
step1:配置时钟;
step2:配置串口,参数默认即可;
step3:生成工程;
step4:遗憾的是MCUXpresso Config Tools工具目前不支持外设参数的配置(官网显示正在开发中。。。),需要手动添加下串口的参数配置代码,在board.h文件添加一下即可;
- /* This is a template for board specific configuration created by MCUXpresso Project Generator. Enjoy! */
- #include <stdint.h>
- #include "board.h"
- //user code begin
- #include "fsl_debug_console.h"
- //user code end
- /*!
- * [url=home.php?mod=space&uid=159083]@brief[/url] initialize debug console to enable printf for this demo/example
- */
- void BOARD_InitDebugConsole(void) {
- /* The user initialization should be placed here */
- //user code begin
- uint32_t uartClkSrcFreq;
- CLOCK_SetLpuartClock(2);
- uartClkSrcFreq = CLOCK_GetOsc0ErClkFreq();
- DbgConsole_Init((uint32_t) LPUART0, 115200, DEBUG_CONSOLE_DEVICE_TYPE_LPUART, uartClkSrcFreq);
- //user code end
- }
主要是选择时钟源和波特率两个参数,这样就能使用DebugConsole了;
在fsl_debug_console.h文件可配置printf是来自SDK还是工具链;
在main函数添加测试代码如下:
- for(;;) { /* Infinite loop to avoid leaving the main function */
- __asm("NOP"); /* something to use as a breakpoint stop while looping */
- //user code begin
- delay_ms(500);
- DbgConsole_Printf("Hell FRDM-KW41Z! --->from DbgConsole_Printf\r\n");
- printf("Hell EEworld! --->from printf\r\n");
- //user code end
- }
工程文件: