完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 喜上眉梢1111 于 2020-12-14 19:04 编辑
感觉是硬件问题了?请问怎么通过软件调整? 功能描述: 串口0接受的数据通过串口1发送出去。 问题描述: 可以实现发送,但是每次改变串口0接收的数据时,仍发送一次之前的数据,第二次发送才是正确的。 望解答一下,谢谢。 代码如下: /**UART0接受中断函数*/ void uart0_receive_callback(UART_Handle_T *hUART, uint8_t event, unsigned long param) { if (event == UART_EVENT_RX_WATERMARK || event == UART_EVENT_RXFIFO_tiMEOUT) { uint32_t rcvCount = (uint32_t)param; while (rcvCount--) { g_rxData0[g_rxSize0] = UART_GetChar(hUART->device); if(g_rxData0[g_rxSize0] == 0x0A)//这里是一旦收到换行,就停止接收 { g_txSize0 = g_rxSize0; g_rxSize0 = 0; uart1_tx_enable = 1;//打开UART1发送标志位。 break; } g_rxSize0++; if(g_rxSize0 >= UART_USERBUFFER_SIZE) g_rxSize0 = 0; } } else if (event == UART_EVENT_RX_OVER || event == UART_EVENT_RX_ERROR) { g_rxSize0 = 0; g_event0 = event; } } //uart1发送函数(处理uart0接受的数据) void transfer() { if(uart1_tx_enable) { // UART_Transmit(&uart1Handle, &g_rxData0[0], g_txSize0 + 1 , TIMEOUT_WAIT_FOREVER); for(i = 0 ;i < g_txSize0 + 1 ; i++) { // printf("g_rxData0[%d]=%c //**** ",i,g_rxData0); SysTick_DelayMS(20); UART_PutChar(UART1,g_rxData0); } memset(g_rxData0,0,sizeof(UART_USERBUFFER_SIZE)); uart1_tx_enable = 0; } } |
|
相关推荐
1 条评论
3个回答
|
|
没程序想帮你都难
|
|
|
|
流程问题吧,应该是接收到串口0的数据才从串口1发送
|
|
|
|
路过学习,谢谢分享。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
【每周推荐】采用11代Intel CPU,基于youyeetoo X1开发板搭建少儿AI智能STEAM积木平台
776 浏览 0 评论
2265 浏览 2 评论
【youyeetoo X1 windows 开发板体验】+ 影音处理和AI模型移植
2124 浏览 5 评论
I.MX6ULL-飞凌 ElfBoard ELF1板卡- 移植zbar的方法
1682 浏览 0 评论
2786 浏览 3 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
5518 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-19 17:05 , Processed in 0.672049 second(s), Total 82, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号