智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1675|回复: 1
打印 上一主题 下一主题

智能车学习知识总结(五)

[复制链接]

7

主题

9

帖子

0

精华

注册会员

Rank: 2

积分
134
威望
80
贡献
40
兑换币
13
注册时间
2014-1-22
在线时间
7 小时
毕业学校
西安交大
跳转到指定楼层
1#
发表于 2014-2-17 12:32:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ctywny 于 2014-2-17 12:42 编辑

最重要的过程便是程序的调试了。断点的设置是关键,位置设置合适的断点可以帮你理清程序流程,找出错误。如下我在main.c里面设置了3个断点,在isr.c里面设置了2个,都是关键的位置。按顺序分别记为12345号断点。
图一,main.c里的断点
图二,isr.c里的断点
程序从上电启动开始运行crt0.s到进入main.c这是一个固定的流程,然后运行到1号断点,停止。随后将进入摄像头的初始化和设置语句。
1号断点到2号断点之间是完成ov7620初始化和工作模式设置的过程。在此过程中由于没有开中断(摄像头都没设置好当然不能开),任何中断都进不来,第二条程序线是不存在的。所以2号断点是一个关键点,从它开始程序开始变成双线执行。程序会随时被中断(PCLK触发)而进入到4号断点。(F10F11就知道)执行到DMA_EN(DMA_CH0)的时候,灰度值数据开始从E端口的低8位((void *)&PTE_BYTE0_IN)传输到内存中的IMG_BUFF(通过DMA_CH0),这句代码在ov7620.c中,是OV7620_init中的一个语句(F11,进去看看。也就是说怎么传早就设置好了,现在只要使能通道就可以*^_^*
DMA_PORTx2BUFF_Init(DMA_CH0,(void *)&PTE_BYTE0_IN, IMG_BUFF, PCLK, DMA_BYTE1, 320 , DMA_rising_keepon);
5号断点是采完一幅图像的判断点,并将标志位IMG_finsh1,这时当程序再运行到3号断点时就会进入下面的图像处理模块。
这里的keepon保证了传输320字节(一行)后下次传输的地址是IMG_BUFF+320,而不会恢复成IMG_BUFF。即下一次数据会存放在第二行。它keepon的是结束的地址而不是最初的地址。
昨天看到陈正冲一句话:键盘上F10F11要锃亮铮亮。与大家共勉。
顺便纠正一个野火的错误(不知道改了没有):
CPSIE i是开中断而不是关,CPSID i才是关。(enable啊!怎么会是关?)野火书和库的注释在这一点都是错的。官方写的arm_cm4.h不会错,可以查看。
官方arm_cm4.h
野火的三天入门P6:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

1

查看全部评分

回复

使用道具 举报

12

主题

875

帖子

0

精华

常驻嘉宾

删繁就简。

Rank: 8Rank: 8

积分
4602

活跃会员奖章优秀会员奖章论坛元老奖章在线王奖章

QQ
威望
2924
贡献
594
兑换币
1807
注册时间
2013-7-20
在线时间
542 小时
2#
发表于 2014-3-1 15:11:37 | 只看该作者
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-6 21:41 , Processed in 0.045207 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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