串口中断和DMA中断一起使用行么?

2019-07-20 03:20发布

思路:电脑通过串口给STM32发数据,当串口接收到数据后进入中断打开DMA接收传输,当DMA传输完成后产生中断

遇到问题1:串口中断和DMA不能同时使用,求助!!!

还有个问题2:第26章DMA中断中

//开启一次DMA传输
void MYDMA_Enable(DMA_Channel_TypeDef*DMA_CHx)
{
 DMA_CHx->CCR&=~(1<<0);       //关闭DMA传输
 DMA_CHx->CNDTR=DMA1_MEM_LEN; //DMA1,传输数据量
 DMA_CHx->CCR|=1<<0;          //开启DMA传输

如果只传输一次,DMA不就一直处于打开状态吗?为什么不在DMA初始化时直接打开DMA传输,而要构建一个单独的函数呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
正点原子
1楼-- · 2019-07-20 05:54
第一个问题,是可以同时中断的,只不过最后那次,应该是同时发生的,因为他们公用一个触发源。
第二个问题,因为下一次传输,还得重新设置DMA1_MEM_LEN,否则DMA不鸟你。
八度空间
2楼-- · 2019-07-20 09:19
 精彩回答 2  元偷偷看……
pigeon226
3楼-- · 2019-07-20 14:12
回复【2楼】Badu_Space:
---------------------------------
试过了,可是还是不行
pigeon226
4楼-- · 2019-07-20 17:58
 精彩回答 2  元偷偷看……
爱上cmu
5楼-- · 2019-07-20 23:11
 精彩回答 2  元偷偷看……
pigeon226
6楼-- · 2019-07-21 04:45
回复【5楼】爱上cmu:
---------------------------------
怎么说?

一周热门 更多>