野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7362|回复: 5

F429中怎么将显存的数据移到数组里呢?

[复制链接]
发表于 2017-9-25 09:49:48 | 显示全部楼层 |阅读模式
我是这么想的:
1 用DMA存储器到存储器模式搬运
2 使用FOR循环一个一个传

第一个我试了可是仿真并数组里面还是0并没有传入,那在ov2640实时显示的例程上的基础上改这个DMA代码应该放在什么位置呢?
OV2640_DMAtov_Config((uint32_t)image,(uint16_t)img_buf_size) 参数1是数组地址,参数2是数组大小。

使用方法2是不是会占用总线及CPU处理,建议使用吗??
火哥帮帮我啊谢谢@@!

回复

使用道具 举报

发表于 2017-9-25 10:46:07 | 显示全部楼层
可以直接定义个指针来访问
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-25 22:40:40 | 显示全部楼层
flyleaf 发表于 2017-9-25 10:46
可以直接定义个指针来访问

怎么访问呢?我这么做的,仿真追踪数组里怎么还是零啊

for(j=0;j<=img_height;j++)
{
         for(i=0;i<=img_width*2;i=i+4)
         {
         image=*(uint32_t*)(FSMC_LCD_ADDRESS+(lcd_height-1-j)*(lcd_width)*2+i);
         }
}
帮我看看~谢谢啦
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-25 22:41:27 | 显示全部楼层
小希希爱自己 发表于 2017-9-25 22:40
怎么访问呢?我这么做的,仿真追踪数组里怎么还是零啊

for(j=0;j

for(j=0;j<=img_height;j++)
{
         for(i=0;i<=img_width*2;i=i+4)
         {
         image=*(uint32_t*)(FSMC_LCD_ADDRESS+(lcd_height-1-j)*(lcd_width)*2+i);
         }
}
回复 支持 反对

使用道具 举报

发表于 2017-9-26 07:26:31 | 显示全部楼层

  1. #define img_with  800
  2. #define img_height 480
  3. uint16_t image[img_with*img_height];
  4. memcpy(image,(uint16_t *)FSMC_LCD_ADDRESS,img_width*img_height*2);
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-28 16:42:36 | 显示全部楼层

谢谢,我最终通多DMA搬运的方式放入内存数组里了~
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-6-3 23:36 , Processed in 0.027553 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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