OpenEdv-开源电子网

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

请教DMA中断

[复制链接]

2

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2010-12-25
在线时间
6 小时
发表于 2010-12-25 14:48:01 | 显示全部楼层 |阅读模式
 我的设置如下:
MYDMA_Config(DMA1_Channel3,(u32)&SPI1->DR,(u32)vv,14400);

void MYDMA_Config(DMA_Channel_TypeDef *DMA_CHx,u32 cpar,u32 cmar,u16 cndtr)
{
 u32 DR_Base;      //做缓冲用,不知道为什么.非要不可
 RCC->AHBENR |= 1 << 0;  //开启DMA1时钟
 DR_Base = cpar;
 DMA_CHx->CPAR = DR_Base;  //DMA1 外设地址
 DMA_CHx->CMAR = (u32)cmar;  //DMA1,存储器地址
 DMA1_MEM_LEN = cndtr;       //保存DMA传输数据量
 DMA_CHx->CNDTR = cndtr;     //DMA1,传输数据量
 DMA_CHx->CCR = 0X00000000; //复位
 DMA_CHx->CCR |= 1 << 2;  //允许半传输中断
 DMA_CHx->CCR |= 1 << 1;  //允许传输完成中断
 DMA_CHx->CCR |= 1 << 4;   //从存储器读
 DMA_CHx->CCR |= 0 << 5;   //普通模式
 DMA_CHx->CCR |= 0 << 6;   //外设地址非增量模式
 DMA_CHx->CCR |= 1 << 7;   //存储器增量模式
 DMA_CHx->CCR |= 0 << 8;   //外设数据宽度为8位
 DMA_CHx->CCR |= 0 << 10;  //存储器数据宽度8位
 DMA_CHx->CCR |= 1 << 12;  //中等优先级
 DMA_CHx->CCR |= 0 << 14;  //非存储器到存储器模式 
    
}
//开启一次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传输


void DMAChannel3_IRQHandler(void)
{
 if(DMA1->ISR & (1 << 10)){
  
  DMA1->IFCR |= (1 << 10);  
  CS595 = !CS595;   
 }
}
程序运行的结果是不进入中断处理函数,不知道是什么原因,请给分析一下,谢谢!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2010-12-21
在线时间
4 小时
发表于 2010-12-25 15:08:38 | 显示全部楼层
回复【楼主位】yzyang2004:
-------------------------------
你MDK软件是用几版本的,我之前用了4.12版本,也出现这样问题,程序没有错误,你换一下3.8试一下
回复 支持 反对

使用道具 举报

98

主题

408

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
1280
金钱
1280
注册时间
2010-12-14
在线时间
0 小时
发表于 2010-12-25 19:01:21 | 显示全部楼层
原子今天不在哦,去亲戚家吃饭了,他外婆过来了!
晚上10点左右回来吧!我们今天都很忙!不好意思,刚回来,我也要出去了!
希望openedv能给大家提供一个友好的技术交流平台!
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2010-12-25
在线时间
0 小时
发表于 2010-12-25 19:31:26 | 显示全部楼层
回复【3楼】张洋:
-------------------------------
我在线等
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2010-12-25
在线时间
0 小时
发表于 2010-12-25 19:31:58 | 显示全部楼层
不是MDK的版本问题,我是3.85的
回复 支持 反对

使用道具 举报

230

主题

1950

帖子

10

精华

论坛元老

Rank: 8Rank: 8

积分
4562
金钱
4562
注册时间
2010-12-14
在线时间
32 小时
发表于 2010-12-25 22:57:42 | 显示全部楼层
回复【楼主位】yzyang2004:
-------------------------------
你贴的代码发现不了问题,建议把你的全部代码贴出,好分析问题。
我是开源电子网?网站管理员,对网站有任何问题,请与我联系!QQ:389063473Email:389063473@qq.com
回复 支持 反对

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2012-12-20
在线时间
0 小时
发表于 2012-12-21 16:29:05 | 显示全部楼层
好像缺少DMA的中断定义
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-19 14:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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