OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 19003|回复: 14

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

[复制链接]

8

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2014-3-25
在线时间
1 小时
发表于 2014-10-6 13:13:02 | 显示全部楼层 |阅读模式
5金钱

思路:电脑通过串口给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传输,而要构建一个单独的函数呢?

最佳答案

查看完整内容[请看2#楼]

第一个问题,是可以同时中断的,只不过最后那次,应该是同时发生的,因为他们公用一个触发源。 第二个问题,因为下一次传输,还得重新设置DMA1_MEM_LEN,否则DMA不鸟你。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2014-10-6 13:13:03 | 显示全部楼层
第一个问题,是可以同时中断的,只不过最后那次,应该是同时发生的,因为他们公用一个触发源。
第二个问题,因为下一次传输,还得重新设置DMA1_MEM_LEN,否则DMA不鸟你。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-10-6 13:39:51 | 显示全部楼层
设置优先级。。。
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

8

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2014-3-25
在线时间
1 小时
 楼主| 发表于 2014-10-6 17:35:23 | 显示全部楼层
回复【2楼】Badu_Space:
---------------------------------
试过了,可是还是不行
回复

使用道具 举报

8

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2014-3-25
在线时间
1 小时
 楼主| 发表于 2014-10-6 17:42:57 | 显示全部楼层

回复

使用道具 举报

7

主题

85

帖子

0

精华

初级会员

Rank: 2

积分
163
金钱
163
注册时间
2011-3-3
在线时间
12 小时
发表于 2014-10-6 17:53:43 | 显示全部楼层
回复【4楼】pigeon226:
---------------------------------
为甚么要同事用中断,这不是脱了裤子放屁吗
回复

使用道具 举报

8

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2014-3-25
在线时间
1 小时
 楼主| 发表于 2014-10-6 20:23:56 | 显示全部楼层
回复【5楼】爱上cmu:
---------------------------------
怎么说?
回复

使用道具 举报

26

主题

467

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
874
金钱
874
注册时间
2013-10-3
在线时间
23 小时
发表于 2014-10-6 22:26:41 | 显示全部楼层
用一个中断就行了,,就接收个串口数据,开两个中断,你意欲何在啊。。。
避免犯错本是错误所在,我错故我在……
回复

使用道具 举报

8

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2014-3-25
在线时间
1 小时
 楼主| 发表于 2014-10-7 09:29:56 | 显示全部楼层
回复【7楼】zhang164534:
---------------------------------
想着这样效率会不会更高吧!
回复

使用道具 举报

8

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2014-3-25
在线时间
1 小时
 楼主| 发表于 2014-10-7 09:31:39 | 显示全部楼层
回复【7楼】zhang164534:
---------------------------------
想着这样效率更高吧!
回复

使用道具 举报

8

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2014-3-25
在线时间
1 小时
 楼主| 发表于 2014-10-7 09:35:26 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
谢原子哥
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2018-7-26
在线时间
3 小时
发表于 2018-7-26 11:00:47 | 显示全部楼层
正点原子 发表于 2014-10-6 13:13
第一个问题,是可以同时中断的,只不过最后那次,应该是同时发生的,因为他们公用一个触发源。
第二个问题 ...

原子哥,stm32103怎么同时用串口2中断接收和相对应的DMA接收呢,实现间接性的切换接收,只能实现一次就挂掉了
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2019-3-14
在线时间
0 小时
发表于 2019-3-14 09:12:47 | 显示全部楼层
爱上cmu 发表于 2014-10-6 17:53
回复【4楼】pigeon226:
---------------------------------
为甚么要同事用中断,这不是脱了裤子放屁吗

想低优先级的看一下有没有收到回车,这总可以吧?
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4105
金钱
4105
注册时间
2018-8-14
在线时间
696 小时
发表于 2019-3-14 10:48:37 | 显示全部楼层
样主你的问题在USART2的中断函数里, 你这是每收到一个字节都重新设定DMA的接收长度。 能正常DMA中断才怪呢

回复

使用道具 举报

0

主题

7

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2021-11-27
在线时间
5 小时
发表于 2021-11-27 11:50:37 | 显示全部楼层
正点原子 发表于 2014-10-6 13:13
第一个问题,是可以同时中断的,只不过最后那次,应该是同时发生的,因为他们公用一个触发源。
第二个问题 ...

版主问个小白问题,ADC采到的数据通过DMA发送给串口,这种情况下,能不能触发串口的接收中断?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 15:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表