完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
vuywsdfwf 发表于 2020-8-4 15:33 int main(void) [ /* Initialize EDMA3 Controller */ EDMA3Initialize(); // // /* Initialize UART */ // UARTStdioInit(); /* Request DMA Channel and TCC for UART Transmit*/ EDMA3RequestChannel(SOC_EDMA30CC_0_REGS, EDMA3_CHANNEL_TYPE_DMA, EDMA3_CHA_UART2_TX, EDMA3_CHA_UART2_TX, EVT_QUEUE_NUM); /* Registering Callback Function for TX*/ cb_Fxn[EDMA3_CHA_UART2_TX] = &callback; /* Request DMA Channel and TCC for UART Receive */ EDMA3RequestChannel(SOC_EDMA30CC_0_REGS, EDMA3_CHANNEL_TYPE_DMA, EDMA3_CHA_UART2_RX, EDMA3_CHA_UART2_RX, EVT_QUEUE_NUM); /* Registering Callback Function for RX*/ cb_Fxn[EDMA3_CHA_UART2_RX] = &callback; //发送与接收都用同一个回调函数,这个回调函数的作用就是uartdmadisable,然后flag变为一!!!!!! /* Used for bCnt */ buffLength = strlen((const char *) enter); /* Transmit Data for Enter Message */ UartTransmitData(EDMA3_CHA_UART2_TX, EDMA3_CHA_UART2_TX, enter, buffLength); /* Enabling UART in DMA Mode*/ UARTDMAEnable(SOC_UART_2_REGS, UART_RX_TRIG_LEVEL_1 | UART_DMAMODE | UART_FIFO_MODE ); /* Wait for control to return from call-back function */ while(0 == flag); flag = 0; /* Receive Data for Input */ UartReceiveData(EDMA3_CHA_UART2_RX, EDMA3_CHA_UART2_RX, buffer); /* Enabling UART in DMA Mode*/ UARTDMAEnable(SOC_UART_2_REGS, UART_RX_TRIG_LEVEL_1 | UART_DMAMODE | UART_FIFO_MODE ); /* Wait for return from callback */ while(0 == flag); flag = 0; /* Transmit Data for Entered value */ UartTransmitData(EDMA3_CHA_UART2_TX, EDMA3_CHA_UART2_TX, buffer, RX_BUFFER_SIZE); /* Enabling UART in DMA Mode*/ UARTDMAEnable(SOC_UART_2_REGS, UART_RX_TRIG_LEVEL_1 | UART_DMAMODE | UART_FIFO_MODE ); /* Wait for return from callback */ while(0 == flag); flag = 0; /* Free EDMA3 Channels for TX and RX */ EDMA3FreeChannel(SOC_EDMA30CC_0_REGS, EDMA3_CHANNEL_TYPE_DMA, EDMA3_CHA_UART2_TX, EDMA3_TRIG_MODE_EVENT, EDMA3_CHA_UART2_TX, EVT_QUEUE_NUM); EDMA3FreeChannel(SOC_EDMA30CC_0_REGS, EDMA3_CHANNEL_TYPE_DMA, EDMA3_CHA_UART2_RX, EDMA3_TRIG_MODE_EVENT, EDMA3_CHA_UART2_RX, EVT_QUEUE_NUM); while(1); ] 这个为Starterware中关于Uart的edma3例程,为什么在下面的地方来了这个while(0==flag) /* Transmit Data for Enter Message */ UartTransmitData(EDMA3_CHA_UART2_TX, EDMA3_CHA_UART2_TX, enter, buffLength); /* Enabling UART in DMA Mode*/ UARTDMAEnable(SOC_UART_2_REGS, UART_RX_TRIG_LEVEL_1 | UART_DMAMODE | UART_FIFO_MODE ); /* Wait for control to return from call-back function */ while(0 == flag); flag = 0; 注释中Wait for control to return from call-back function 是用来干什么的? 还有这个例程是不是只能接收一次,回复一次就不能再接收了?? 谢谢,求助!! |
|
|
|
|
|
|
|
白帅1234 发表于 2020-8-4 18:36 uart的收和发来触发edma uart rx, tx事件号可以查看数据手册第101页上的表Table 6-12. EDMA Synchronization Events。 http://www.ti.com/lit/ds/symlink/tms320c6748.pdf |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
549 浏览 0 评论
1613 浏览 0 评论
2047 浏览 0 评论
为啥BQ7693003DBTR芯片在和BQ769X0盒子通讯时收不到信号?
1513 浏览 0 评论
DSP 28027F 开发板 XDS100v2调试探针诊断日志显示了 Error -150 (SC_ERR_FTDI_FAIL)如何解决
1337 浏览 0 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
1757浏览 29评论
2781浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
1724浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
1634浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
1645浏览 13评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 13:25 , Processed in 1.208696 second(s), Total 80, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1201