完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
接收和发送,都采用DMA处理,实现串口一次发送4个字节(如aa bb cc ee)给MCU,将收到的这组数据再发给串口助手。但是以当每隔1s发送一组数据的方式时,在发送20个字节(5组数据)才收到4096个字节。主函数如下:
int main(void) { HAL_Init(); SystemClock_Config(); /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_DMA_Init(); MX_USART2_UART_Init(); /* USER CODE BEGIN 2 */ if(yy==1) { yy=2; HAL_UART_Receive_DMA(&huart2,fyRxData,sizeof(fyRxData));// } while (1) { if(TX_counter==H_CNT) { TX_counter=0; HAL_UART_DMAResume(&huart2);//Resumes the DMA Transfer of receive. HAL_Delay(1); HAL_UART_Receive_DMA(&huart2,fyRxData,sizeof(fyRxData));// } if(RX_counter==H_CNT) { RX_counter=0; HAL_UART_DMAResume(&huart2);//Resumes the DMA Transfer of send. HAL_Delay(1); HAL_UART_Transmit_DMA(&huart2,fyTxData,sizeof(fyTxData)); } } } 请问各位高手,这个现象是怎么回事啊?! |
|
相关推荐
10个回答
|
|
|
自己顶一个!
|
|
|
|
|
|
此论坛不行啊
|
|
|
|
|
|
没用过CUBE库。。
|
|
|
|
|
|
用外设库,处理过DMA。个人感觉DMA适合干定时定量的活,这种接收完再发送,直接用串口的send和receive函数不就可以了。。。
|
|
|
|
|
|
解决了:一个字节一个字节接收; 打开串口全局中断。 |
|
|
|
|
|
发送时修改一下发送DMA空间,一般是DMA空间满以后才会产生DMA中断。
|
|
|
|
|
|
|
|
|
|
|
|
顶一个!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2797 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2403 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2276 浏览 0 评论
2388 浏览 1 评论
1637 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 19:27 , Processed in 0.793212 second(s), Total 60, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
10681