OpenEdv-开源电子网

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

摄像头程序中sizeof问题

[复制链接]

7

主题

69

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2013-4-6
在线时间
0 小时
发表于 2013-5-6 22:03:10 | 显示全部楼层 |阅读模式

程序中有这么一句for(i=0;i<sizeof(ov7670_init_reg_tbl)/sizeof(ov7670_init_reg_tbl[0])/2;i++);
假设ov7670_int_reg_tb1行数等于X,则sizeof(ov7670_init_reg_tbl)=1*X*2,sizeof(ov7670_init_reg_tbl[0])=1*2,如果后面还要除以2,就只有初始化一半数组中的寄存器,请问这是程序中本意就是初始化一半还是程序出了问题呢?

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-5-6 23:07:25 | 显示全部楼层
你再好好缕缕。。。
看看到底是一半,还是全部。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

69

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2013-4-6
在线时间
0 小时
 楼主| 发表于 2013-5-7 09:00:40 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
以我对sizeof的理解,u8应该和char型一样,按一算。ov7670_init_reg_tbl[0]代表第一行的首地址,sizeof(ov7670_init_reg_tbl[0])=1*2。
参考资料http://wenku.baidu.com/view/eac4850ef78a6529647d5340.html
如有不对之处,请指正!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-5-7 10:36:04 | 显示全部楼层
实际测试下吧!!!
这东西不难。
temp=sizeof(ov7670_init_reg_tbl[0]);
i=sizeof(ov7670_init_reg_tbl);
printf("i/temp:%d\r\n",i/temp);

//初始化序列   
for(i=0;i<sizeof(ov7670_init_reg_tbl)/sizeof(ov7670_init_reg_tbl[0]);i++)
{
    SCCB_WR_Reg(ov7670_init_reg_tbl[0],ov7670_init_reg_tbl[1]);
delay_ms(2);
  }
    return 0x00;  //ok
你看看printf是多少,i是多少,temp是多少。>
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

69

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2013-4-6
在线时间
0 小时
 楼主| 发表于 2013-5-7 11:13:39 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
运行结果,temp=2,i=0x156=342d,我数了下你的ov7670_init_reg_tbl大概有115行,这个i的结果是怎么回事?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-5-7 12:08:31 | 显示全部楼层
只能说你的数组没数对了,我这边测试完全正常。
c语言的东西,不再解释了。自己慢慢研究吧!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

69

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2013-4-6
在线时间
0 小时
 楼主| 发表于 2013-5-7 12:11:51 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
你的i和temp是多少呢?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-5-7 14:36:05 | 显示全部楼层
你用我们的例程试试就知道了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

69

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2013-4-6
在线时间
0 小时
 楼主| 发表于 2013-5-7 20:45:31 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
ov7670_init_reg_tbl[][2]= 
{   
     /*以下为OV7670 QVGA RGB565参数  */
   {0x3a, 0x04},//
{0x40, 0x10},
{0x12, 0x14},//QVGA,RGB输出

//输出窗口设置
{0x32, 0x80},
{0x17, 0x16},         
{0x18, 0x04},//5
{0x19, 0x02},
{0x1a, 0x7a},//0x7a,
  {0x03, 0x0a},//0x0a,


{0x0c, 0x0c},
{0x15, 0x00},
{0x3e, 0x00},//10
{0x70, 0x00},
{0x71, 0x01},
{0x72, 0x11},
{0x73, 0x09},//
        
{0xa2, 0x02},//15
{0x11, 0x00},//时钟分频设置,0,不分频.
{0x7a, 0x20},
{0x7b, 0x1c},
{0x7c, 0x28},
        
{0x7d, 0x3c},//20
{0x7e, 0x55},
{0x7f, 0x68},
{0x80, 0x76},
{0x81, 0x80},
        
{0x82, 0x88},
{0x83, 0x8f},
{0x84, 0x96},
{0x85, 0xa3},
{0x86, 0xaf},
        
{0x87, 0xc4},//30
{0x88, 0xd7},
{0x89, 0xe8},
{0x13, 0xe0},
{0x00, 0x00},//AGC
        
{0x10, 0x00},
{0x0d, 0x00}, 
{0x14, 0x20},//0x38, limit the max gain
{0xa5, 0x05},
{0xab, 0x07},
        
{0x24, 0x75},//40
{0x25, 0x63},
{0x26, 0xA5},
{0x9f, 0x78},
{0xa0, 0x68},
        
{0xa1, 0x03},//0x0b,
{0xa6, 0xdf},//0xd8,
{0xa7, 0xdf},//0xd8,
{0xa8, 0xf0},
{0xa9, 0x90},
        
{0xaa, 0x94},//50
{0x13, 0xe5},
{0x0e, 0x61},
{0x0f, 0x4b},
{0x16, 0x02},
        
{0x1e, 0x27},//图像输出镜像控制.0x07,
{0x21, 0x02},
{0x22, 0x91},
{0x29, 0x07},
{0x33, 0x0b},
        
{0x35, 0x0b},//60
{0x37, 0x1d},
{0x38, 0x71},
{0x39, 0x2a},
{0x3c, 0x78},
        
{0x4d, 0x40},
{0x4e, 0x20},
{0x69, 0x5d},
{0x6b, 0x40},//PLL*4=48Mhz
{0x74, 0x19},
{0x8d, 0x4f},
        
{0x8e, 0x00},//70
{0x8f, 0x00},
{0x90, 0x00},
{0x91, 0x00},
{0x92, 0x00},//0x19,//0x66
        
{0x96, 0x00},
{0x9a, 0x80},
{0xb0, 0x84},
{0xb1, 0x0c},
{0xb2, 0x0e},
        
{0xb3, 0x82},//80
{0xb8, 0x0a},
{0x43, 0x14},
{0x44, 0xf0},
{0x45, 0x34},
        
{0x46, 0x58},
{0x47, 0x28},
{0x48, 0x3a},
{0x59, 0x88},
{0x5a, 0x88},
        
{0x5b, 0x44},//90
{0x5c, 0x67},
{0x5d, 0x49},
{0x5e, 0x0e},
{0x64, 0x04},
{0x65, 0x20},
        
{0x66, 0x05},
{0x94, 0x04},
{0x95, 0x08},
{0x6c, 0x0a},
{0x6d, 0x55},
        
        
{0x4f, 0x80},
{0x50, 0x80},
{0x51, 0x00},
{0x52, 0x22},
{0x53, 0x5e},
{0x54, 0x80},
        
//{0x54, 0x40},//110
        
        
{0x09, 0x03},//驱动能力最大

{0x6e, 0x11},//100
{0x6f, 0x9f},//0x9e for advance AWB
    {0x55, 0x00},//亮度
    {0x56, 0x40},//对比度
    {0x57, 0x80},//0x40,  change according to Jim's request
}; 
程序中标的数字有问题,总行数是115,有兴趣的请亲自去数数。
我前面说的i和temp都是用例程调试出的结果。不能总是为了得到一个正确的结果就行了,中间的过程也是极为重要的吧。希望能够把这个问题弄懂,谢谢!
回复 支持 反对

使用道具 举报

7

主题

69

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2013-4-6
在线时间
0 小时
 楼主| 发表于 2013-5-7 22:30:43 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
我知道问题在哪了,程序中ov7670.h中有如下定义:
#define CHANGE_REG_NUM  171 //需要配置的寄存器总数   
extern const u8 ov7670_init_reg_tbl[CHANGE_REG_NUM][2]; //寄存器及其配置表

所以仿真的结果i=342,temp=2,sizeof(ov7670_init_reg_tbl)/sizeof(ov7670_init_reg_tbl[0])=temp/i=171,也就是我所说的行数。
而程序中sizeof(ov7670_init_reg_tbl)/sizeof(ov7670_init_reg_tbl[0])/2=342/2/2=85。ov7670_init_reg_tbl[][2]里面有115行,所以根本没有用完所有的行数来初始化。
如理解有问题,请指正!谢谢
回复 支持 反对

使用道具 举报

13

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
403
金钱
403
注册时间
2016-2-2
在线时间
66 小时
发表于 2016-10-9 19:01:14 | 显示全部楼层
确实是进入了85次,不知道为什么,楼主有解吗
回复 支持 反对

使用道具 举报

2

主题

60

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
206
金钱
206
注册时间
2016-7-26
在线时间
33 小时
发表于 2016-10-10 08:57:16 | 显示全部楼层
ov7670_init_reg_tbl[0]代表第一行的首地址。这句话就是一个错误理解。你看看C语言书的数组部分。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-24 02:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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