Platrform: TWR-K60N512
Example: enable UART0
set port B 16 as UART0 Rx (demo board, J3 pin 13)
set port B 17 as UART0 Tx (demo board, J3 pin 14)
Step 1, Change port setting
Code Warrior Porjects\bsp_twrk60n512\twrk60n512 BSP Files\init_gpio.c
modify function _bsp_serial_io_init()
switch (dev_num) { case 0:#if 1 pctl = (PORT_MemMapPtr)PORTB_BASE_PTR; if (flags & IO_PERIPHERAL_PIN_MUX_ENABLE) { /* PTB16 as RX function (Alt.3) + drive strength */ pctl->PCR[16] = 0 | PORT_PCR_MUX(3) | PORT_PCR_DSE_MASK; /* PTB17 as TX function (Alt.3) + drive strength */ pctl->PCR[17] = 0 | PORT_PCR_MUX(3) | PORT_PCR_DSE_MASK; } if (flags & IO_PERIPHERAL_PIN_MUX_DISABLE) { /* PTB16 default */ pctl->PCR[16] = 0; /* PTB17 default */ pctl->PCR[17] = 0; }#else pctl = (PORT_MemMapPtr)PORTD_BASE_PTR; if (flags & IO_PERIPHERAL_PIN_MUX_ENABLE) { /* PTD6 as RX function (Alt.3) + drive strength */ pctl->PCR[6] = 0 | PORT_PCR_MUX(3) | PORT_PCR_DSE_MASK; /* PTD7 as TX function (Alt.3) + drive strength */ pctl->PCR[7] = 0 | PORT_PCR_MUX(3) | PORT_PCR_DSE_MASK; } if (flags & IO_PERIPHERAL_PIN_MUX_DISABLE) { /* PTD6 default */ pctl->PCR[6] = 0; /* PTD7 default */ pctl->PCR[7] = 0; }#endifStep 2
change BSPCFG_ENABLE_TTYA from 0 to 1
Code Warrior Porjects\bsp_twrk60n512\twrk60n512 User Config\user_config.h
#ifndef __user_config_h__#define __user_config_h__/* mandatory CPU identification */#define MQX_CPU PSP_CPU_MK60DN512Z/* Silicon version number */#define MK60_REV_1_0 1/*** BSP settings - for defaults see mqx\source\bsp\<board_name>\<board_name>.h*/#define BSPCFG_ENABLE_TTYA 1 // change from 0 to 1#define BSPCFG_ENABLE_ITTYA 0
UART0 setting are set at _bsp_sci0_init variable
default baudrate is 115200
const KUART_INIT_STRUCT _bsp_sci0_init ( @ init_sci.c)
Step 3
rebuild BSP and PSP
Step 4
Implement your own UART module
UART_Module.h
#ifndef __UART_MODULE_H__#define __UART_MODULE_H__#define UART_COUNT 5//******************************************************************************////******************************************************************************void UART_Module_init(void);void UART0_printf(char *);#endif /* __UART_MODULE_H__ */
UART_Module.c
#include "UART_Module.h"#include <mqx.h>#include <bsp.h>#define DEV_UART0 "ttya:" #define UART0_IDX 0#define UART1_IDX 1#define UART2_IDX 2#define UART3_IDX 3#define UART4_IDX 4MQX_FILE_PTR UART_fp[UART_COUNT] = {0, 0, 0, 0, 0};//******************************************************************************////******************************************************************************void UART_Module_init(void){ //---------------------------------------------------------------- // open UART0 //---------------------------------------------------------------- printf("Opening UART device ..."); UART_fp[UART0_IDX] = fopen(DEV_UART0, NULL); if(UART_fp[UART0_IDX] != NULL) { printf("fopen "DEV_UART0" done\r\n"); } else { printf("fopen "DEV_UART0" failed\r\n"); _task_block(); }}//******************************************************************************////******************************************************************************void UART_printf(char *mData, uint_32 mIndex){ MQX_FILE_PTR fp = 0; uint32_t len; if(UART_COUNT <= mIndex) { return; } fp = UART_fp[mIndex]; len = strlen(mData); if (write(fp, mData, len)) { } }//******************************************************************************////******************************************************************************void UART0_printf(char *mData){ UART_printf(mData, UART0_IDX);}
Step 5
call UART_Module_init();
call UART0_printf("UART0 test\r\n");
Step 6
build project
Step 7
Download code and debug
Good lock!
Leslie