OpenEdv-开源电子网

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

有关DMA的问题

[复制链接]

50

主题

243

帖子

1

精华

高级会员

Rank: 4

积分
616
金钱
616
注册时间
2014-2-26
在线时间
1 小时
发表于 2014-3-15 23:57:37 | 显示全部楼层 |阅读模式
while(1)
   {
if(DMA_GetFlagStatus(DMA2_FLAG_TC4)!=RESET) //判断通道4传输完成
{
DMA_ClearFlag(DMA2_FLAG_TC4);//清除通道4传输完成标志
break; 
       }
pro=DMA_GetCurrDataCounter(DMA1_Channel4);//得到当前还剩余多少个数据
pro=1-pro/5168;//得到百分比  
pro*=100;      //扩大100倍
LCD_ShowNum(60,170,pro,3,16);  
   }

这是例程中的检测传输完成然后跳出中断的 程序段

可是我的程序执行的时候传输完成后死在了这个循环里  用Jlink仿真发现 标志外DMA2_FLAG_TC4在传输完成后 并没有置位 

怎么回事 求神助~~





我是一只摔不死的蚂蚁!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2014-3-16 12:15:42 | 显示全部楼层
回复 支持 反对

使用道具 举报

50

主题

243

帖子

1

精华

高级会员

Rank: 4

积分
616
金钱
616
注册时间
2014-2-26
在线时间
1 小时
 楼主| 发表于 2014-3-16 17:50:03 | 显示全部楼层
回复【2楼】ricefat:
---------------------------------
没有死在哪一句上 而是 由于标志位检测不到 一直在这个循环里出不来
我是一只摔不死的蚂蚁!
回复 支持 反对

使用道具 举报

50

主题

243

帖子

1

精华

高级会员

Rank: 4

积分
616
金钱
616
注册时间
2014-2-26
在线时间
1 小时
 楼主| 发表于 2014-3-16 17:50:18 | 显示全部楼层
回复【2楼】ricefat:
---------------------------------
为什么会检测不到标志位啊
我是一只摔不死的蚂蚁!
回复 支持 反对

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2014-3-16 18:18:21 | 显示全部楼层
回复【4楼】_tank_:
---------------------------------
你确定通道没有用错?
回复 支持 反对

使用道具 举报

50

主题

243

帖子

1

精华

高级会员

Rank: 4

积分
616
金钱
616
注册时间
2014-2-26
在线时间
1 小时
 楼主| 发表于 2014-3-16 18:21:42 | 显示全部楼层
回复【5楼】ricefat:
---------------------------------
DMA.C里的程序是直接从例程中复制过来的啊 那我在确认一下 你也在想想还可能是哪里的问题
我是一只摔不死的蚂蚁!
回复 支持 反对

使用道具 举报

50

主题

243

帖子

1

精华

高级会员

Rank: 4

积分
616
金钱
616
注册时间
2014-2-26
在线时间
1 小时
 楼主| 发表于 2014-3-16 18:24:08 | 显示全部楼层
回复【5楼】ricefat:
---------------------------------
确实是直接复制过来的 一点都没有改动
我是一只摔不死的蚂蚁!
回复 支持 反对

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2014-3-16 18:27:04 | 显示全部楼层
回复【7楼】_tank_:
---------------------------------
通道是和你所用的外设对应的,官方参考手册里面有对应说明,看看是否有错
回复 支持 反对

使用道具 举报

50

主题

243

帖子

1

精华

高级会员

Rank: 4

积分
616
金钱
616
注册时间
2014-2-26
在线时间
1 小时
 楼主| 发表于 2014-3-16 18:35:50 | 显示全部楼层
回复【8楼】ricefat:
---------------------------------
通道应该没有设置错 因为DMA可以完成串口的发送   只是发送完之后因为检测不到标志位 走不出循环了
我是一只摔不死的蚂蚁!
回复 支持 反对

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2014-3-16 18:52:34 | 显示全部楼层
回复【9楼】_tank_:
---------------------------------
DMA的中断你开了吗
回复 支持 反对

使用道具 举报

50

主题

243

帖子

1

精华

高级会员

Rank: 4

积分
616
金钱
616
注册时间
2014-2-26
在线时间
1 小时
 楼主| 发表于 2014-3-16 22:08:30 | 显示全部楼层
回复【10楼】ricefat:
---------------------------------
解决了 原来检测的是DMA2的标志位 而我用的是DMA1的标志位 真是丢大了

不过还有一个问题就是 在例程中有对字符串末尾加换行符 但是实际在串口调试窗口中接收到的 很多都没有换行符 怎么破
我是一只摔不死的蚂蚁!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-13 15:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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