一、新建工程
可参考往期推文:S32K344 VCU实战项目之带你入门篇
二、引脚配置
此实例选择串口13进行配置:
三、外设配置
添加外设:
配置串口信息1:
配置串口信息2(回调函数):
中断外设配置:
配置完毕后更新代码。
四、部分代码展示
/*** @brief UART_13回调函数** 该函数作为LPUART_13的中断服务程序使用,根据接收到的事件类型执行相应的处理逻辑。* 主要功能包括处理接收缓冲区满和发送缓冲区空的事件,以及相应的数据传输逻辑。** @param HwInstance 硬件实例标识,此处忽略* @param Event 事件类型,指示当前中断的原因* @param UserData 用户数据,此处忽略*/void UART_13_Callback(const uint8 HwInstance, const Lpuart_Uart_Ip_EventType Event, void *UserData){(void)HwInstance; // 避免未使用参数编译警告(void)UserData; // 避免未使用参数编译警告switch(Event){case LPUART_UART_IP_EVENT_RX_FULL: // 接收缓冲区满事件{// 检查是否收到换行符或接收缓冲区即将溢出if ((rxBuffer[rxBufferIdx] != 'n') && (rxBufferIdx != (BUFFER_SIZE - 2U))){// 继续接收下一个字符rxBufferIdx++;Lpuart_Uart_Ip_SetRxBuffer(LPUART_UART_IP_INSTANCE_USING_13,&rxBuffer[rxBufferIdx],1U);}else{// 将接收缓冲区的数据复制到发送缓冲区,并初始化接收缓冲区memcpy(txBuffer,rxBuffer,rxBufferIdx+1);Lpuart_Uart_Ip_AsyncSend(LPUART_UART_IP_INSTANCE_USING_13,txBuffer,1);txBufferIdx++;memset(rxBuffer,0,rxBufferIdx+1);test = rxBufferIdx + 1;rxBufferIdx = 0;Lpuart_Uart_Ip_SetRxBuffer(LPUART_UART_IP_INSTANCE_USING_13,&rxBuffer[rxBufferIdx],1U);};}break;case LPUART_UART_IP_EVENT_TX_EMPTY: // 发送缓冲区空事件{// 检查是否所有数据都已发送if(txBufferIdx > test - 1){// 重置发送缓冲区索引txBufferIdx = 0;}else{// 继续发送下一个字符Lpuart_Uart_Ip_SetTxBuffer(LPUART_UART_IP_INSTANCE_USING_13,&txBuffer[txBufferIdx++],1U);}}break;case LPUART_UART_IP_EVENT_END_TRANSFER: // 传输结束事件{// 此处可添加传输结束后的处理逻辑}break;case LPUART_UART_IP_EVENT_ERROR: // 错误事件{// 此处可添加错误处理逻辑}break;default:{// 处理未知事件}break;}}
五、注意事项
此处注意前文提到的一个回调的配置,应调用此处的回调函数。
欢迎转发分享给需要的好友!
微信号:zls_it
阅读全文
1893
下载ECAD模型