一,采用 KSDK_1.3.0库,使用IAR(keil上的源码是兼容的,我是同时使用的,不习惯用iar,只有在编译和仿真时用)
二,对 C:\Freescale\KSDK_1.3.0\examples\frdmk64f\driver_examples\uart\uart_blocking下的工程进行改进,目地为了以后做AT指令的收发(串口1要转到电脑上)串口3正好板子上的J1上有 这c16 c17. 三,源码更改, 1, 串口号从0变成3,这里重新定义一个 BOARD_DEBUG_UART_INSTANCE3 #define BOARD_DEBUG_UART_INSTANCE3 3 ,我也在 board.h里定义的, 2,脚位定义,先开启PC16,PC17的时钟,如果不加会异常, CLOCK_SYS_EnablePortClock(PORTC_IDX); PC16,PC17定义成串口 configure_uart_pins(BOARD_DEBUG_UART_INSTANCE3); 3,重新写一个函数专门定义串口
- void com_init()
- { uint32_t byteCountBuff = 0;
- //串口定义
- uart_user_config_t uartConfig = {
- .bitCountPerChar = kUart8BitsPerChar,//8Bit
- .parityMode = kUartParityDisabled, //校验位
- .stopBitCount = kUartOneStopBit,//停止位
- .baudRate = BOARD_DEBUG_UART_BAUD//波特率
- };
-
- CLOCK_SYS_EnablePortClock(PORTC_IDX);
- //串口的IO定义,3就是第二个口
- configure_uart_pins(BOARD_DEBUG_UART_INSTANCE3);
- //串口处理
- UART_DRV_Init(BOARD_DEBUG_UART_INSTANCE3, &uartState, &uartConfig);
- //设置自动接收 的数组和最大长度
- UART_DRV_ReceiveData(BOARD_DEBUG_UART_INSTANCE3, buffer_rece, received_size);
- }
-
复制代码
- int main(void)
- {
- // uint8_t rxChar = 0;
- uint32_t byteCountBuff = 0;
- // uart_state_t uartState;
- //串口定义
- /* uart_user_config_t uartConfig = {
- .bitCountPerChar = kUart8BitsPerChar,//8Bit
- .parityMode = kUartParityDisabled, //校验位
- .stopBitCount = kUartOneStopBit,//停止位
- .baudRate = BOARD_DEBUG_UART_BAUD//波特率
- };*/
- // Enable clock for PORTs, setup board clock source, config pin
- // IO 控制 ,包括时钟
- hardware_init();
- // Call OSA_Init to setup LP Timer for timeout
- OSA_Init();
- com_init();
- // Inform to start blocking example
- byteCountBuff = sizeof(buffStart);//得到一个数组的内容长度
- //发送指定数组 buffStart,长为内容长度,BOARD_DEBUG_UART_INSTANCE 为是哪个串口号
- UART_DRV_SendDataBlocking(BOARD_DEBUG_UART_INSTANCE3, buffStart, byteCountBuff, 1000u);
- Delay(200);
- // Inform user of what to do
- byteCountBuff = sizeof(bufferData1);
- UART_DRV_SendDataBlocking(BOARD_DEBUG_UART_INSTANCE3, bufferData1, byteCountBuff, 1000u);
-
-
- // Send/receive blocking function
- while(true)
- {
- UART_DRV_GetReceiveStatus(BOARD_DEBUG_UART_INSTANCE3,&received_CountBuff );
- if(received_CountBuff>0&&received_CountBuff!=received_size)
- {
- Delay(200);
- UART_DRV_SendDataBlocking(BOARD_DEBUG_UART_INSTANCE3, bufferData1, byteCountBuff, 1000u);
- Delay(200);
- uartState.isRxBusy=0;
- //重新给长度
- // uartState.rxSize=received_size;
- //重新初始化接收内容
- UART_DRV_ReceiveData(BOARD_DEBUG_UART_INSTANCE3, buffer_rece, received_size);
-
- }
-
- }
- }
复制代码
|