OpenEdv-开源电子网

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

DMA存储器

[复制链接]

4

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2019-3-2
在线时间
11 小时
发表于 2019-4-5 11:28:07 | 显示全部楼层 |阅读模式
5金钱
在代码运行过程中,还可以对DMA再次初始化来更新存储器地址或者存储器地址中的值吗?

最佳答案

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

不需要再初始化, 先禁能, 改地址, 改数据长度, 最后使能就可以再次使其工作了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2019-4-5 11:28:08 | 显示全部楼层
不需要再初始化, 先禁能, 改地址, 改数据长度, 最后使能就可以再次使其工作了
回复

使用道具 举报

4

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2019-3-2
在线时间
11 小时
 楼主| 发表于 2019-4-5 13:19:06 | 显示全部楼层
edmund1234 发表于 2019-4-5 11:47
不需要再初始化, 先禁能, 改地址, 改数据长度, 最后使能就可以再次使其工作了

我是把DMA的初始化用一个函数封装的,这种情况怎么该地址和数据长度呢。可以禁能后改变数组的值然后使能,这样操作最后DMA的那个数组是改变后的数组吗
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2019-4-5 14:08:54 | 显示全部楼层
本帖最后由 edmund1234 于 2019-4-5 14:10 编辑
问题很大 发表于 2019-4-5 13:19
我是把DMA的初始化用一个函数封装的,这种情况怎么该地址和数据长度呢。可以禁能后改变数组的值然后使能 ...

DMA1_Channel1->CCR &= ~(u32)DMA_CCR_EN;
        DMA1_Channel1->CMAR = (u32)0;      // 内存地址
        DMA1_Channel1->CNDTR = 0x100;     // 数据长度         
        DMA1_Channel1->CPAR = (u32)&USART1->DR;          // 如没需要改变外设地址可删去这条
DMA1->IFCR = 0x0F<<0;

DMA1_Channel1->CCR |= DMA_CCR_EN;

是否把这几行封成函数你自己看着办吧
回复

使用道具 举报

4

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2019-3-2
在线时间
11 小时
 楼主| 发表于 2019-4-5 16:08:22 | 显示全部楼层
//**********************&#213;y&#207;ò2¨μ÷·ù****************************************
                                        case SW1_Cycle_L_PRES:
                                                //for(i=0;i<360;i++) {
                                                        //Sine_Amp3_3[i]=Sine_Amp3_3[i]/2;
                                        //        }
                                                DMA_Cmd(DMA1_Stream4,DISABLE);  //&#189;&#251;&#196;ü
                                                DMA_InitStructure.DMA_Memory0BaseAddr=(u32)&Sine_Amp1_0;  //D&#194;μ&#196;′&#230;′¢μ&#216;&#214;·
                                                DMA_Cmd(DMA1_Stream4,ENABLE);        //ê1&#196;ü
                                                break;
请问这样修改地址可以吗
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2019-4-5 16:31:56 | 显示全部楼层
可以
但如果你不是循环模, 数据长度要重新设置的
回复

使用道具 举报

4

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2019-3-2
在线时间
11 小时
 楼主| 发表于 2019-4-5 20:07:33 | 显示全部楼层
edmund1234 发表于 2019-4-5 16:31
可以
但如果你不是循环模, 数据长度要重新设置的

emmm,我是循环的。但也还需要改一下,可能要多禁能几个地方。很感谢您,
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-23 06:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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