完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
关于HAL库中用DMA方式使用串口的问题,串口中断用开吗?
使用DMA模式收发串口的核心语句为如下2句 HAL_UART_Transmit_DMA HAL_UART_Receive_DMA 我的问题: 1,使用DMA模式在cube中的NVIC中断选项中 dma的 interrupt是要enable的 也是默认的 但是usart 的global interrupt 的中断是否也要enable??? 之所以问这个问题是因为,DMA模式的核心就是CPU尽量少的参与,由硬件来部分完成CPU的工作。 就那串口为例, 普通的串口收到一个byte就中断一次,CPU就要处理一次 而DMA模式串口收到了一组数据(比如100bytes)再产生中断,然后CPU再一次性处理。 CPU的工作从原来的100次减少到了1次。 但是如果enable的 usart 的global interrupt,那么是不是又变成了,收到一个byte就中断一次了?那DMA的意义就不大了。 2,DMA的callback回调函数是什么? dma把收据收满了应该产生一个中断,我猜是DMA中断,而HAL库的中断一般是用回调函数处理的。 所以我的问题就出现了,串口DMA的中断回调函数是什么呢? |
|
相关推荐
3个回答
|
|
膜拜大神
|
|
|
|
不需要的了;
|
|
|
|
需要打开。
打开之后,调用HAL_UART_Transmit_DMA, 实现的就是楼主希望的功能。 发送完设定长度的数据,才进一次UART中断。 发送完一半设定长度的数据,会进一次DMA接受中断,发送完所有再进一次DMA中断。 如果调用HAL_UART_Transmit_IT,是每次发完一个数据就进一次UART。 接收没测过。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
969 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
954 浏览 2 评论
2066 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1162 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1587 浏览 1 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 06:01 , Processed in 0.489846 second(s), Total 48, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号