OpenEdv-开源电子网

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

DMA 配置函数传参数问题

[复制链接]

21

主题

58

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
263
金钱
263
注册时间
2011-8-23
在线时间
31 小时
发表于 2012-8-21 12:01:00 | 显示全部楼层 |阅读模式
我按原子的DMA配置函数的框架写了个DMA配置函数:
void DMA_config(DMA_Channel_TypeDef *DMA_CHx, unsigned long cpar, unsigned long cmar, unsigned short len)
{
unsigned long BASE;
BASE  = cpar;
RCC->AHBENR  |= 1 << 1;        //DMA2通道时钟使能

DMA_CHx->CPAR  = (unsigned long)&SPI3->DR; //外设地址
DMA_CHx->CMAR  = cmar; //存储地址 

snd_len        = len;
DMA_CHx->CNDTR = len;

DMA_CHx->CCR  |= 3 << 12; //DMA通道优先级最高
DMA_CHx->CCR  |= 1 << 10; //存储数据宽度为16BIT
DMA_CHx->CCR  |= 1 << 8; //外设数据宽度为16BIT
DMA_CHx->CCR  |= 1 << 7; //存储器增量模式
DMA_CHx->CCR  |= 1 << 5; //执行循环操作
DMA_CHx->CCR  |= 1 << 4; //由存储器到外设
}

调用:
DMA_config(DMA2_Channel2, (unsigned long)&SPI3->DR, (unsigned long)buff, 65530);


在DMA_config函数中:
     把  DMA_CHx->CPAR  = (unsigned long)&SPI3->DR;   就能传输数据
     把  DMA_CHx->CPAR  = BASE 或 DMA_CHx->CPAR  = cpar  就不能传输数据了。

  调用时传进来的外设地址也是 (unsigned long)&SPI3->DR 呀,  经过了个形参怎么就不行了? 
   
   求指点。。。












正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 10:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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