<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_Crazy Bingo</title><subtitle type="text">Learn to walk first before you want to run…</subtitle><id>http://feed.cnblogs.com/blog/u/70646/rss</id><updated>2012-05-15T11:43:51Z</updated><author><name>CrazyBingo</name><uri>http://www.cnblogs.com/crazybingo/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/crazybingo/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/70646/rss"/><entry><id>http://www.cnblogs.com/crazybingo/archive/2012/05/12/2496992.html</id><title type="text">Cyclone II RAM ROM设置</title><summary type="text">在用到cycloeII的器件，用到RAM,ROM时，要设置一下，在菜单ASSIGNMENTS-&gt;SETTING-&gt;ANALYSIS&amp;SYNHESISSETTINGS_DEFAULTPATAMETERS,在NAME栏键入CYCLONEII_SAFE_WRITE;在DEFAULTSETTING栏键入VERIFIED_SAFE分别按ADD和OK</summary><published>2012-05-12T01:31:00Z</published><updated>2012-05-12T01:31:00Z</updated><author><name>CrazyBingo</name><uri>http://www.cnblogs.com/crazybingo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/crazybingo/archive/2012/05/12/2496992.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/crazybingo/archive/2012/05/12/2496992.html"/><content type="html">&lt;p&gt;&lt;span&gt;在用到cycloeII的器件，用到RAM,ROM时，要设置一下，&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;在菜单ASSIGNMENTS-&amp;gt;SETTING-&amp;gt;ANALYSIS&amp;amp;SYNHESIS&amp;nbsp;SETTINGS_DEFAULT&amp;nbsp;PATAMETERS,&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;在NAME&amp;nbsp;栏键入&amp;nbsp;CYCLONEII_SAFE_WRITE;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp;在DEFAULT&amp;nbsp;SETTING栏键入&amp;nbsp;VERIFIED_SAFE&amp;nbsp;分别按ADD和OK&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/133098/2012051209283493.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/crazybingo/aggbug/2496992.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/crazybingo/archive/2012/05/12/2496992.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/crazybingo/archive/2012/05/11/2496440.html</id><title type="text">RGBA alpha 透明度混合算法</title><summary type="text">http://blog.csdn.net/xhhjin/article/details/6445460Alpha 透明度混合算法，网上收集整理，分成以下三种：一、 R1,G1,B1，Alpha1 为前景颜色值，R2,G2,B2，Alpha2 为背景颜色值，则 前景色 R = R1 * Alpha1 + R2 * Alpha2 * (1-Alpha1) ； G = G1 * Alpha1 + G2 * Alpha2 * (1-Alpha1) ； B = B1 * Alpha1 + B2 * Alpha2 * (1-Alpha1) ；背景色 Alpha = 1 - (1 - Alpha1) * .</summary><published>2012-05-11T09:34:00Z</published><updated>2012-05-11T09:34:00Z</updated><author><name>CrazyBingo</name><uri>http://www.cnblogs.com/crazybingo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/crazybingo/archive/2012/05/11/2496440.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/crazybingo/archive/2012/05/11/2496440.html"/><content type="html">&lt;p&gt;&lt;a href="http://blog.csdn.net/xhhjin/article/details/6445460"&gt;http://blog.csdn.net/xhhjin/article/details/6445460&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Alpha 透明度混合算法，网上收集整理，分成以下三种：&lt;/p&gt;&lt;p&gt;一、 R1,G1,B1，Alpha1 为前景颜色值，R2,G2,B2，Alpha2 为背景颜色值，则&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 前景色&amp;nbsp; R = R1 * Alpha1 + R2 * Alpha2 * (1-Alpha1) ；&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; G = G1 * Alpha1 + G2 * Alpha2 * (1-Alpha1) ；&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; B = B1 * Alpha1 + B2 * Alpha2 * (1-Alpha1) ；&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;背景色 Alpha = 1 - (1 - Alpha1) * ( 1 - Alpha2) ；&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; R = R / Alpha ；&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; G = G / Alpha ；&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; B = B / Alpha ；&lt;/p&gt;&lt;p&gt;二、半透明算法:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 混合算法目前在常用到的算法是AlphaBlend。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 计算公式如下:假设一幅图象是A，另一幅透明的图象是B，那么透过B去看A，看上去的图象C就是B和A的混合图象，&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;设B图象的透明度为alpha(取值为0-1，1为完全透明，0为完全不透明).&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Alpha混合公式如下：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;R(C)=(1-alpha)*R(B) + alpha*R(A)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;G(C)=(1-alpha)*G(B) + alpha*G(A)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; B(C)=(1-alpha)*B(B) + alpha*B(A)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R(x)、G(x)、B(x)分别指颜色x的RGB分量原色值。从上面的公式可以知道，Alpha其实是一个决定混合透明度的数值。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 改变这个 alpha 值可以得到一个渐变的效果。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 分离RGB色用"位与"、"移位"运算的方法；&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 透明的比例按2的N次幂来分级，这样可以快速运算。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;如果是按32级&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Alpha = 1/32&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;B图的权重 = (32-n)/32，则A图的权重= n/32，&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;可以得到这样的算法：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; R(C)= (32-n) * R(B)+ n* R(A);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;再对R(C)右移5位(除以32)就可以了&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 透明的处理：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 假设指定B上的黑色透明色，则碰到B上的颜色为黑色，则不显示黑色，改为显示A上这个位置的颜色。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;三、简易Alpha混合算法：首先，要能取得上层与下层颜色的 RGB三基色，&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;然后用r,g,b 为最后取得的颜色值；r1,g1,b1是上层的颜色值；r2,g2,b2是下层颜色值&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 若Alpha=透明度，则&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 当Alpha=50%时，&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r = r1/2 + r2/2;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g = g1/2 + g2/2;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b = b1/2 + b2/2;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;当Alpha&amp;lt;50%时，&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r = r1 - r1/ALPHA + r2/ALPHA;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g = g1 - g1/ALPHA + g2/ALPHA;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;b = b1 - b1/ALPHA + b2/ALPHA;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 当Alpha&amp;gt;50%时，&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r = r1/ALPHA + r2 - r2/ALPHA;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g = g1/ALPHA + g2 - g2/ALPHA;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;b = b1/ALPHA + b2 - b2/ALPHA;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/crazybingo/aggbug/2496440.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/crazybingo/archive/2012/05/11/2496440.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/crazybingo/archive/2012/05/11/2495680.html</id><title type="text">摄像头camera 7660/7670/7225/9650以及程序流程(一)</title><summary type="text">转：http://www.baohe.com/album/view-26800-183286.html调试了好多摄像头，OV7660、OV7670、OV7225这3款是30万的摄像头还有一个130万的OV9650摄像头移植在ARM平台上的数据，都调试成功了，7寸模拟屏显示,希望有用调试的要点：AGC:图像自动增益控制，调节的东西有增益范围、增益上限下限大小等等，具体的要看应用场合来调试效果 一般会把增益开大一些，对暗的环境会有明显改善，看的清楚一些，不至于一片黑。还有上下限，要看效 果，一般开的范围比较大的话，特别是CMOS的摄像头，对暗环境增益开大时候会出现非常明显的噪点。AWB：自动白平衡</summary><published>2012-05-11T03:28:00Z</published><updated>2012-05-11T03:28:00Z</updated><author><name>CrazyBingo</name><uri>http://www.cnblogs.com/crazybingo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/crazybingo/archive/2012/05/11/2495680.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/crazybingo/archive/2012/05/11/2495680.html"/><content type="html">&lt;p&gt;转：&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.baohe.com/album/view-26800-183286.html"&gt;http://www.baohe.com/album/view-26800-183286.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;调试了好多摄像头，OV7660、OV7670、OV7225这3款是30万的摄像头&lt;/p&gt;&lt;p&gt;还有一个130万的OV9650摄像头&lt;/p&gt;&lt;p&gt;移植在ARM平台上的数据，都调试成功了，7寸模拟屏显示,希望有用&lt;/p&gt;&lt;p&gt;调试的要点：&lt;/p&gt;&lt;p&gt;AGC:图像自动增益控制，调节的东西有增益范围、增益上限下限大小等等，具体的要看应用场合来调试效果&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 一般会把增益开大一些，对暗的环境会有明显改善，看的清楚一些，不至于一片黑。还有上下限，要看效&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 果，一般开的范围比较大的话，特别是CMOS的摄像头，对暗环境增益开大时候会出现非常明显的噪点。&lt;/p&gt;&lt;p&gt;AWB：自动白平衡，有时候一般都在摄像头的夜间模式反映出来，一般夜间模式开启时候，由于效果不同，输&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 出的帧率也会不同。严重的话，会有切割现象，这是因为掉帧，场频引起的，这个时候就要调节CLK以及不同的夜模式来保证一个最佳的效果。&lt;/p&gt;&lt;p&gt;需要手册的请发邮件至:jk_new@163.com,因为上班，可能不能及时回复，请见谅！&lt;/p&gt;&lt;p&gt;const unsigned char Ov7660_YCbCr8bit[][2] = {&amp;nbsp;&lt;/p&gt;&lt;p&gt;{0X12,0X80},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X11,0X80}, //&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X92,0X00},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X93,0X00},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X9d,0X4c},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X9e,0X3f},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X3b,0X88},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X13,0Xf2},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X10,0X00},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X00,0X00},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X01,0X80},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X02,0X80},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X13,0Xf7},&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X12,0X00},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X04,0X00},//NO HREF skip&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /////640x480&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X18,0X01},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X17,0X13},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X32,0X92},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X19,0X02},&amp;nbsp;&amp;nbsp;&amp;nbsp; //B10&amp;nbsp; 1000&amp;nbsp; (8)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X1a,0X7a},&amp;nbsp;&amp;nbsp;&amp;nbsp; //B11110100&amp;nbsp;&amp;nbsp; 1111010000&amp;nbsp; (488)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X03,0Xf0},&amp;nbsp;&amp;nbsp;&amp;nbsp; //00&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X0e,0X84},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X0f,0X62},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X15,0X10},&amp;nbsp; //&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X16,0X02},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X1b,0X01},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X1e,0X39}, //b&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X29,0X3c},//&amp;nbsp;&amp;nbsp;&amp;nbsp; ;20 for internal regulator&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X33,0X00},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X34,0X07},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X35,0X84},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X36,0X00},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X38,0X13},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X39,0X43},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X3a,0X00},//p&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X3c,0X6c},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X3d,0X90},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X3f,0X29},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X40,0Xc1},//output full range enable Bit7Bit8 11: Output range: [00] to [FF]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X41,0X20},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X6b,0X0a},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0Xa1,0Xc8},&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {0X69,0X80},&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X43,0Xf0},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X44,0X10},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X45,0X78},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X46,0Xa8},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X47,0X60},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X48,0X80},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X59,0Xba},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X5a,0X9a},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X5b,0X22},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X5c,0Xb9},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X5d,0X9b},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X5e,0X10},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X5f,0Xe0},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X60,0X85},&amp;nbsp;&amp;nbsp;&amp;nbsp; //;05 for advanced AWB&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X61,0X60},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X9f,0X9d},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0Xa0,0Xa0},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X4f,0X66},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X50,0X6b},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X51,0X05},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X52,0X19},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X53,0X40},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X54,0X59},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X55,0X40},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X56,0X40},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X57,0X40},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X58,0X0d},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X8b,0Xcc},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X8c,0Xcc},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X8d,0Xcf},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X6c,0X40},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X6d,0X30},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X6e,0X4b},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X6f,0X60},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X70,0X70},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X71,0X70},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X72,0X70},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X73,0X70},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X74,0X60},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X75,0X60},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X76,0X50},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X77,0X48},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X78,0X3a},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X79,0X2e},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X7a,0X28},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X7b,0X22},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X7c,0X04},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X7d,0X07},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X7e,0X10},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X7f,0X28},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X80,0X36},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X81,0X44},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X82,0X52},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X83,0X60},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X84,0X6c},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X85,0X78},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X86,0X8c},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X87,0X9e},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X88,0Xbb},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X89,0Xd2},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X8a,0Xe6},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X14,0X2e},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X24,0X78},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0X25,0X5c}&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;/***************************jk 2008-01-17&amp;nbsp; color test7670*/&lt;/p&gt;&lt;p&gt;const unsigned char Ov7670_YCbCr8bit[][2] = {&lt;br /&gt;{0x12,0x80},&lt;br /&gt;{0x11,0x01},&lt;br /&gt;{0x3a,0x04},&lt;br /&gt;{0x12,0x00},&lt;br /&gt;&lt;br /&gt;{0x17,0x13},&lt;br /&gt;{0x18,0x01},&lt;br /&gt;{0x32,0xb6},&lt;br /&gt;&lt;br /&gt;{0x19,0x02},&lt;br /&gt;{0x1a,0x7a},&lt;br /&gt;&lt;br /&gt;{0x03,0x0a},&lt;br /&gt;{0x0c,0x00},&lt;br /&gt;{0x3e,0x00},&lt;br /&gt;&lt;br /&gt;{0x70,0x3a},&lt;br /&gt;{0x71,0x35},&lt;br /&gt;{0x72,0x11},&lt;br /&gt;{0x73,0xf0},&lt;br /&gt;{0xa2,0x02},&lt;br /&gt;&lt;br /&gt;{0x11,0x83},//this step is importance 设置clk&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;{0x7a,0x20},&lt;br /&gt;{0x7b,0x11},&lt;br /&gt;{0x7c,0x1b},&lt;br /&gt;{0x7d,0x2a},&lt;br /&gt;{0x7e,0x42},&lt;br /&gt;{0x7f,0x4c},&lt;br /&gt;{0x80,0x56},&lt;br /&gt;{0x81,0x5f},&lt;br /&gt;{0x82,0x68},&lt;br /&gt;{0x83,0x70},&lt;br /&gt;{0x84,0x78},&lt;br /&gt;{0x85,0x87},&lt;br /&gt;{0x86,0x95},&lt;br /&gt;{0x87,0xb0},&lt;br /&gt;{0x88,0xc8},&lt;br /&gt;{0x89,0xdf},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;{0x13,0xe0},&lt;br /&gt;{0x00,0x00},&lt;br /&gt;{0x10,0x00},&lt;br /&gt;{0x0d,0x40},&lt;br /&gt;&lt;br /&gt;{0x14,0x23},//0x61:open =128x,0x51=64x&lt;br /&gt;&lt;br /&gt;{0xa5,0x05},&lt;br /&gt;{0xab,0x07},&lt;br /&gt;&lt;br /&gt;{0x24,0x77},//up AGC&lt;br /&gt;{0x25,0x44},//low AGC&lt;br /&gt;&lt;br /&gt;{0x26,0xe3},&lt;br /&gt;&lt;br /&gt;{0x9f,0x70},//20080117&lt;br /&gt;{0xa0,0x60},//20080117&lt;br /&gt;&lt;br /&gt;{0xa1,0x0b},&lt;br /&gt;{0xa6,0xd8},&lt;br /&gt;{0xa7,0xd8},&lt;br /&gt;{0xa8,0xf0},&lt;br /&gt;{0xa9,0x90},&lt;br /&gt;{0xaa,0x94},&lt;br /&gt;{0x13,0xe5},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;{0x0e,0x61},&lt;br /&gt;{0x0f,0x4b},&lt;br /&gt;{0x16,0x02},&lt;br /&gt;&lt;br /&gt;{0x1e,0x10},//mirror&lt;br /&gt;{0x21,0x02},&lt;br /&gt;{0x22,0x91},&lt;br /&gt;&lt;br /&gt;{0x33,0x0b},//03&lt;br /&gt;{0x35,0x0b},&lt;br /&gt;{0x37,0x1d},&lt;br /&gt;{0x38,0x71},//&lt;br /&gt;{0x39,0x2a},//&lt;br /&gt;&lt;br /&gt;{0x3c,0x78},&lt;br /&gt;&lt;br /&gt;{0x4d,0x40},&lt;br /&gt;{0x4e,0x20},&lt;br /&gt;{0x69,0x00},//55&lt;br /&gt;{0x6b,0x4a},&lt;br /&gt;{0x74,0x19},&lt;br /&gt;{0x8d,0x4f},&lt;br /&gt;{0x8e,0x00},&lt;br /&gt;{0x8f,0x00},&lt;br /&gt;{0x90,0x00},&lt;br /&gt;{0x91,0x00},&lt;br /&gt;{0x96,0x00},&lt;br /&gt;{0x9a,0x80},&lt;br /&gt;{0xb0,0x84},//8c&lt;br /&gt;{0xb1,0x0c},&lt;br /&gt;{0xb2,0x0e},&lt;br /&gt;{0xb3,0x82},&lt;br /&gt;{0xb8,0x0a},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;{0x43,0x14},&lt;br /&gt;{0x44,0xf0},&lt;br /&gt;{0x45,0x34},&lt;br /&gt;{0x46,0x58},&lt;br /&gt;{0x47,0x28},&lt;br /&gt;{0x48,0x3a},&lt;br /&gt;{0x59,0x88},&lt;br /&gt;{0x5a,0x88},&lt;br /&gt;{0x5b,0x44},&lt;br /&gt;{0x5c,0x67},&lt;br /&gt;{0x5d,0x49},&lt;br /&gt;{0x5e,0x0e},&lt;br /&gt;{0x6c,0x0a},&lt;br /&gt;{0x6d,0x55},&lt;br /&gt;{0x6e,0x11},&lt;br /&gt;{0x6f,0x9f},//9e for advance AWB&lt;br /&gt;{0x6a,0x40},&lt;br /&gt;&lt;br /&gt;{0x01,0x80},&lt;br /&gt;{0x02,0x80},&lt;br /&gt;{0x13,0xe7},//设置自动gain 白平衡等内容&lt;br /&gt;{0X15,0X10},&amp;nbsp; //pht add 20071208 pclk 反相会出现闪烁的噪音点&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;{0x4f,0x80},&lt;br /&gt;{0x50,0x80},//20080117&lt;br /&gt;{0x51,0x00},//20080117&lt;br /&gt;{0x52,0x22},//20080117&lt;br /&gt;{0x53,0x5e},//20080117&lt;br /&gt;{0x54,0x80},//20080117&lt;br /&gt;&lt;br /&gt;{0x55,0x25},//addr&amp;nbsp; brightness&lt;br /&gt;//{0x56,0x40},//addr&amp;nbsp; contrast&lt;br /&gt;//{0x57,0x40},//addr&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;{0x58,0x1e},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;{0x41,0x00},&lt;br /&gt;{0x3f,0x00},&lt;br /&gt;{0x75,0x05},&lt;br /&gt;{0x76,0xe1},&lt;br /&gt;{0x4c,0x00},&lt;br /&gt;{0x77,0x01},&lt;br /&gt;{0x3d,0xc2},&lt;br /&gt;{0x4b,0x09},&lt;br /&gt;{0xc9,0xff},&lt;br /&gt;{0x41,0x38},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;{0x34,0x11},&lt;br /&gt;//{0x3b,0xfa},&lt;br /&gt;{0x3b,0x9a},//调节夜间模式相关内容，是否掉帧也在次设置&lt;br /&gt;&lt;br /&gt;//{0x3b,0xc8},//20080117&lt;br /&gt;&lt;br /&gt;//{0x3e,0x00},&lt;br /&gt;&lt;br /&gt;{0xa4,0x80},&lt;br /&gt;{0x96,0x00},&lt;br /&gt;{0x97,0x30},&lt;br /&gt;{0x98,0x20},&lt;br /&gt;{0x99,0x30},&lt;br /&gt;{0x9a,0x84},&lt;br /&gt;{0x9b,0x29},&lt;br /&gt;{0x9c,0x03},&lt;br /&gt;//&lt;br /&gt;//{0x9d,0x99},//R gain for LED output frame&lt;br /&gt;//{0x9e,0x7f},//B gain for LED output frame&lt;br /&gt;//{0x9f,0x80},//B gain for LED output frame&lt;br /&gt;&lt;br /&gt;{0x78,0x04},&lt;br /&gt;&lt;br /&gt;//append lens correction setting,&lt;br /&gt;{0x62,0x30},&lt;br /&gt;{0x63,0x30},&lt;br /&gt;{0x64,0x08},&lt;br /&gt;{0x94,0x07},&lt;br /&gt;{0x95,0x0b},&lt;br /&gt;{0x65,0x00},&lt;br /&gt;{0x66,0x05},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;{0x79,0x01},&lt;br /&gt;{0xc8,0xf0},&lt;br /&gt;&lt;br /&gt;////20080117&amp;nbsp;&lt;br /&gt;{0x79,0x0f},&lt;br /&gt;{0xc8,0x00},&lt;br /&gt;{0x79,0x10},&lt;br /&gt;{0xc8,0x7e},&lt;br /&gt;{0x79,0x0a},&lt;br /&gt;{0xc8,0x80},&lt;br /&gt;{0x79,0x0b},&lt;br /&gt;{0xc8,0x01},&lt;br /&gt;{0x79,0x0c},&lt;br /&gt;{0xc8,0x0f},&lt;br /&gt;{0x79,0x0d},&lt;br /&gt;{0xc8,0x20},&lt;br /&gt;{0x79,0x09},&lt;br /&gt;{0xc8,0x80},&lt;br /&gt;{0x79,0x02},&lt;br /&gt;{0xc8,0xc0},&lt;br /&gt;{0x79,0x03},&lt;br /&gt;{0xc8,0x40},&lt;br /&gt;{0x79,0x05},&lt;br /&gt;{0xc8,0x30},&lt;br /&gt;{0x79,0x26},&lt;br /&gt;//{0x3b,0xd8},&lt;br /&gt;{0xf1,0x10},&lt;br /&gt;{0x0f,0x1d},&lt;br /&gt;{0x0f,0x4b},&lt;br /&gt;{0xff,0xff}&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;/***************************jk 2008-01-17&amp;nbsp; color test7670*/&lt;/p&gt;&lt;p&gt;const unsigned char Ov7225_YCbCr8bit[][2] = {&lt;/p&gt;&lt;p&gt;/****20080117-15:50**7225****&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x12,0x80,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x3d,0x03,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x17,0x26,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x18,0xa0,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x19,0x07,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x1a,0xf0,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x32,0x00,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x29,0xa0,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x2c,0xf0,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x65,0x20,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x11,0x03,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x0d,0x41,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x41,0x00,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x42,0x7f,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x63,0xe0,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x64,0xff,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x13,0xf0,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x22,0x7f,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x23,0x03,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x24,0x40,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x25,0x30,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x26,0xa1,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x6b,0xaa,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x13,0xf7,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x90,0x05,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x91,0x01,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x92,0x03,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x93,0x00,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x94,0xb0,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x95,0x9d,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x96,0x13,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x97,0x16,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x98,0x7b,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x99,0x91,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x9a,0x1e,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x9b,0x08,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x9c,0x20,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x9e,0x81,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0xa6,0x04,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x7e,0x0e,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x7f,0x22,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x80,0x3f,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x81,0x63,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x82,0x6e,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x83,0x77,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x84,0x80,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x85,0x88,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x86,0x90,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x87,0x97,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x88,0xa4,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x89,0xaf,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x8a,0xc5,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x8b,0xd7,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x8c,0xe8,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x8d,0x20,&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x15,0x10,*/&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;const unsigned char OV9650_YCbCr8bit[][2] =&lt;br /&gt;{&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;Port_Init();&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;MMU_Init();&lt;br /&gt;&amp;nbsp;Calc_Clock(1);&lt;br /&gt;&amp;nbsp;UPDATE_REFRESH(Hclk);&lt;br /&gt;&amp;nbsp;Isr_Init();&lt;br /&gt;&amp;nbsp;Uart_TxEmpty(1);&lt;br /&gt;&amp;nbsp;Delay(0);&amp;nbsp;//calibrate Delay();&lt;/p&gt;&lt;p&gt;Uart_Printf(&amp;nbsp;&amp;nbsp;&amp;nbsp; "| S3C2440A Firmware-Test ver 0.03 Jan 2004.&amp;nbsp;&amp;nbsp; |\n");&lt;/p&gt;&lt;p&gt;Clk0_Enable(2);&amp;nbsp;// 0:MPLLin, 1:UPLL, 2:FCLK, 3:HCLK, 4:PCLK, 5:DCLK0&lt;br /&gt;&amp;nbsp;Clk1_Enable(3);&amp;nbsp;// 0:MPLLout, 1:UPLL, 2:RTC, 3:HCLK, 4:PCLK, 5:DCLK1&lt;/p&gt;&lt;p&gt;/*******Camera start********/&lt;/p&gt;&lt;p&gt;rCIGCTRL |= (1&amp;lt;&amp;lt;31); //camera I/F soft reset&amp;nbsp;&amp;nbsp; 内部模块&lt;br /&gt;&amp;nbsp;Delay(10);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //camera 还有一个硬件复位，外部的，在30位设置，如rCIGCTRL |=(1&amp;lt;&amp;lt;30);&lt;br /&gt;&amp;nbsp;rCIGCTRL &amp;amp;= ~(1&amp;lt;&amp;lt;31);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //rCIGCTRL寄存器还可以设置场信号、行同步信号的极性等&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;rCLKCON |= (1&amp;lt;&amp;lt;19); // enable camclk&amp;nbsp; 从CPU输出一个HCLK给摄像头，摄像头开始工作起振&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //摄像头工作的时候需要外部一个时钟进行触发&lt;/p&gt;&lt;p&gt;&amp;nbsp;/**********&amp;times;&amp;times;&amp;times;&amp;times;&amp;times; CamPortSet&amp;times;&amp;times;&amp;times;&amp;times;&amp;times;&amp;times;&amp;times;&amp;times;&amp;times;&amp;times;******/&lt;/p&gt;&lt;p&gt;save_GPJCON = rGPJCON;&lt;br /&gt;&amp;nbsp;save_GPJDAT = rGPJDAT;&lt;br /&gt;&amp;nbsp;save_GPJUP = rGPJUP;&lt;/p&gt;&lt;p&gt;&amp;nbsp;rGPJCON = 0x2aaaaaa;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //GPJ12= CAMRESET,J3&amp;nbsp; port&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;rGPJDAT = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //GPJ11=CAMCLKOUT J4 port&amp;nbsp;&lt;br /&gt;&amp;nbsp;rGPJUP = 0;&lt;/p&gt;&lt;p&gt;/*******时钟设置： rUPLLCON = (mdiv&amp;lt;&amp;lt;12) | (pdiv&amp;lt;&amp;lt;4) | sdiv;*******/&lt;/p&gt;&lt;p&gt;ChangeUPllValue(60, 4, 1);&amp;nbsp;&amp;nbsp;// UPLL clock = 96MHz, PLL input 16.9344MH&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/p&gt;&lt;p&gt;rCLKDIVN|=(1&amp;lt;&amp;lt;3); // UCLK 48MHz setting for UPLL 96MHz&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;//&lt;strong&gt;见p232的CAMDIVN 的Camera clock = UPLL/[(CAMCLK_DIV+1)X2]&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;//一般都根据象素来设置CAMCLK,如果是高象素如130万(1280*1024，那么至少需要设置48Mhz,并且130万象素的可能传送显示只能达到15帧XSGA格式，但是如果30万象素，那么24Mhz可能就能达到30帧的效果)&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;rCAMDIVN = (rCAMDIVN &amp;amp; ~(0xf))|(1&amp;lt;&amp;lt;4)|(divn); // CAMCLK is divided..Set CameraClock=24M(divn =1)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;/*******************/&lt;/p&gt;&lt;p&gt;////CamModuleReset(); 摄像头外部模组的复位，或者也可以就外部硬件复位,工作之前都要复位的，很好理解,&lt;/p&gt;&lt;p&gt;rCIGCTRL |= (1&amp;lt;&amp;lt;30);&amp;nbsp;&amp;nbsp; //external camera reset high&lt;br /&gt;&amp;nbsp;Delay(30);&lt;br /&gt;&amp;nbsp;rCIGCTRL &amp;amp;= ~(1&amp;lt;&amp;lt;30);&amp;nbsp;//external camera reset low&lt;/p&gt;&lt;p&gt;Delay;&amp;nbsp;&amp;nbsp; //一定要注意的是，这个延时，复位之后一定要加延时500mS就够了&lt;/p&gt;&lt;p&gt;write_IIC(); //////////初始化camera 模块,这个模块就是IIC模块，最基本的功能，非常简单，就不再详细说了&lt;/p&gt;&lt;p&gt;&amp;nbsp;/*********后面开始就是preview抓捕并且LCD显示摄像头的程序部分****&lt;/p&gt;&lt;p&gt;三星的自定义程序有2个抓捕模式，一个是code,一个是pview,&amp;nbsp; 选择pview讲解，通一个即可**/&lt;/p&gt;&lt;p&gt;//camera global variables&lt;/p&gt;&lt;p&gt;camTestMode=CAM_TEST_MODE_PVIEW;&amp;nbsp; //选pview&lt;br /&gt;&amp;nbsp;camCodecCaptureCount=0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;camPviewCaptureCount=0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //计数&lt;br /&gt;&amp;nbsp;camPviewStatus=CAM_STOPPED;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //状态,初始的时候定义为停止状态&lt;br /&gt;&amp;nbsp;camCodecStatus=CAM_STOPPED;&lt;br /&gt;&amp;nbsp;flagCaptured_P=0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //标志&lt;/p&gt;&lt;p&gt;CAM_PVIEW_OUTPUT==CAM_RGB16B;&amp;nbsp;&amp;nbsp;&amp;nbsp; //camera输出格式,我这里定义摄像头为RGB565格式输出，因此后面需要初始化为565格式的LCD显示输出&lt;/p&gt;&lt;p&gt;/****后面是LCD显示初始化*****/&lt;/p&gt;&lt;p&gt;LCDinit();&lt;/p&gt;&lt;p&gt;/******* 包含了如下&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Lcd_Port_Init();&amp;nbsp; //LCD口的设置&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Lcd_Init(mode);&lt;/p&gt;&lt;p&gt;/***************************** Lcd_Init(mode)函数初始化步骤概解****************************************&lt;/p&gt;&lt;p&gt;LCD根据物理屏分辨率大小设置虚拟屏的缓存大小，例如，实际屏大小为x=320,y=240,那么虚拟大小一般开原来Size &amp;times;2，即Vx=x*2,Vy=y*2，然后在指定的位置开虚拟数组，三星里面用的是如下的几句来定义的：&lt;/p&gt;&lt;p&gt;U32 (*frameBuffer16BitTft640480)[SCR_XSIZE_TFT_640480/2]; //定义一个指针数组名为*frameBuffer16BitTft640480&lt;/p&gt;&lt;p&gt;frameBuffer16BitTft640480=(U32 (*)[SCR_XSIZE_TFT_640480/2])LCDFRAMEBUFFER; //将frameBuffer16BitTft640480这个数组名赋予硬件地址，LCDFRAMEBUFFER,这个就是硬件设计时候的SRAM的一部分，一般分配为0x33800000~0x33bffffff，4MB的空间大小，为什么会这么定义，具体见三星手册的LCD章节部分，有详细描述，此处不再说明了。&lt;/p&gt;&lt;p&gt;然后就是设置rLCDCON1、rLCDCON2、rLCDCON3、rLCDCON4、rLCDCON5这些寄存器设置Vclk、Hclk、前肩、后肩、消隐还有其他信号波形脉宽。&lt;/p&gt;&lt;p&gt;rLCDSADDR1、rLCDSADDR2、rLCDSADDR3指的是Frame buffer start address register，这几个寄存器的设置见三星手册page402的几个example.&lt;/p&gt;&lt;p&gt;rLCDINTMSK|=(3); // MASK LCD Sub Interrupt&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;rTCONSEL&amp;amp;=(~7); // Disable LPC3600&amp;nbsp;&lt;br /&gt;rTPAL=0; // Disable Temp Palette&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;然后看看void _PutTft16Bit_240320(U32 x,U32 y,U32 c)这个函数就是一个象素的打点了，显示的位置x,y以及颜色c,0x0000ffff==黑色&amp;nbsp;&amp;nbsp; 后面的16位R5-G6-B5&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(x&amp;lt;SCR_XSIZE_TFT_240320 &amp;amp;&amp;amp; y&amp;lt;SCR_YSIZE_TFT_240320)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; frameBuffer16BitTft240320[(y)][(x)/2]=( frameBuffer16BitTft240320[(y)][x/2]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp; ~(0xffff0000&amp;gt;&amp;gt;((x)%2)*16) ) | ( (c&amp;amp;0x0000ffff)&amp;lt;&amp;lt;((2-1-((x)%2))*16) );&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;***********************************************************************/&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Glib_Init(mode);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //初始化象素点控制&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Select_Tcon();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Lcd_PowerEnable(0, 1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Lcd_EnvidOnOff(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Glib_ClearScr(0, mode);&amp;nbsp;&amp;nbsp; //&amp;nbsp; 清屏、写入全黑点&lt;/p&gt;&lt;p&gt;******/&lt;/p&gt;&lt;p&gt;//其实这个函数包含了挺多的东西了，包括LCD显示输出选择，相关LCD显示部分，网上资料也有很多了，也是初始化CPU寄存器，写入解码芯片的寄存器，里面还有framebuffer 的开显示缓存，来check a little registers&lt;/p&gt;&lt;p&gt;接着继续为摄像头定义不一样的寄存器&lt;/p&gt;&lt;p&gt;rLCDCON5 |= 1; // halfword swap enable -&amp;gt; Camera data is halfword swap type, 16bit&lt;/p&gt;&lt;p&gt;/**********分配内存空间**********/&lt;/p&gt;&lt;p&gt;rLCDSADDR3 &amp;amp;= ~(0x7ff&amp;lt;&amp;lt;11); // offset size 0&lt;/p&gt;&lt;p&gt;/***************这个地址比较重要对于确定显存大小&amp;nbsp; ,Page 401***************/&lt;br /&gt;&amp;nbsp;rLCDSADDR2=M5D( (LCDFRAMEBUFFER+(LCD_XSIZE_TFT_240320*LCD_YSIZE_TFT_240320*2))&amp;gt;&amp;gt;1 );&lt;/p&gt;&lt;p&gt;/************LCD屏幕上可以显示出彩条&lt;/p&gt;&lt;p&gt;data = (U32 *)LCDFRAMEBUFFER;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i=0;i&amp;lt;240*160;i++) // 16bpp test&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (i&amp;lt;240*40) *data++ = 0x001f001f; // blue&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else if ((i&amp;lt;240*80)&amp;amp;&amp;amp;(i&amp;gt;=240*40)) *data++ = 0x07e007e0; //green&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else if ((i&amp;lt;240*120)&amp;amp;&amp;amp;(i&amp;gt;=240*80)) *data++ = 0xf800f800; //red&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else if (i&amp;gt;=240*120) *data++ = 0xf800001f; // blue &amp;amp; red&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;*///&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**********颜色的测定RGB 32=16*2***********/&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*data++ = 0xffffffff;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //white&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Uart_Printf("\n pixel is&amp;nbsp; %d&amp;nbsp; ,%x \n"&amp;nbsp; ,i,*data-2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *data++ = 0xf800f800;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //red&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;Uart_Printf("\n pixel is&amp;nbsp; %d&amp;nbsp; ,%x \n"&amp;nbsp; ,i,*data-1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *data++ = 0x001f001f;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //blue&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *data++ = 0x07e007e0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //green&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *data++ = 0xffe0ffe0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//yellow&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;/************Camera 初始化**********/&lt;/p&gt;&lt;p&gt;CamInit(640, 480, 480, 234, 0, 0,&amp;nbsp; CAM_FRAMEBUFFER_C, CAM_FRAMEBUFFER_P);&lt;/p&gt;&lt;p&gt;/***************重点是上面这个函数：摄像头的一些初始化工作***************/&lt;/p&gt;&lt;p&gt;/* Description of Parameters&lt;br /&gt;CoDstWidth: Destination Width of Codec Path&lt;br /&gt;CoDstHeight: Destination Height of Codec Path&lt;br /&gt;PrDstWidth: Destination Width of Preview Path&lt;br /&gt;PrDstHeight: Destination Height of Preview Path&lt;br /&gt;WinHorOffset: Size of Window Offset for Horizontal Direction&lt;br /&gt;WinVerOffset: Size of Window Offset for Vertical Direction&lt;br /&gt;CoFrameBuffer: Start Address for Codec DMA&lt;br /&gt;PrFrameBuffer: Start Address for Previe DMA&lt;br /&gt;*/&lt;br /&gt;void CamInit(U32 CoDstWidth, U32 CoDstHeight, U32 PrDstWidth, U32 PrDstHeight,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; U32 WinHorOffset, U32 WinVerOffset,&amp;nbsp; U32 CoFrameBuffer, U32 PrFrameBuffer)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;/****************************************************************************/&lt;br /&gt;/****************************************************************************/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/****************************************************************************/&lt;/p&gt;&lt;p&gt;rSUBSRCPND |= BIT_SUB_CAM_C|BIT_SUB_CAM_P;&lt;br /&gt;&amp;nbsp;ClearPending(BIT_CAM);&lt;br /&gt;&amp;nbsp;pISR_CAM = (U32)CamIsr;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;CamPreviewIntUnmask();&lt;br /&gt;&amp;nbsp;CamCaptureStart(CAM_PVIEW_SCALER_CAPTURE_ENABLE_BIT);&lt;br /&gt;&amp;nbsp;Uart_Printf("Press Enter key to exit!\n");&lt;/p&gt;&lt;img src="http://www.cnblogs.com/crazybingo/aggbug/2495680.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/crazybingo/archive/2012/05/11/2495680.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/crazybingo/archive/2012/05/06/2485672.html</id><title type="text">SCCB 总线和I2C总线区别（转载 ）</title><summary type="text">转载地址：user1/2524/archives/2008/49949.htmlSCCB总线SCCB是简化的I2C协议，SIO-l是串行时钟输入线，SIO-O是串行双向数据线，分别相当于I2C协议的SCL和SDA。SCCB的总线时序与I2C基本相同，它的响应信号ACK被称为一个传输单元的第9位，分为Don’t care和NA。Don’t care位由从机产生;NA位由主机产生，由于SCCB不支持多字节的读写，NA位必须为高电平。另外，SCCB没有重复起始的概念，因此在SCCB的读周期中，当主机发送完片内寄存器地址后，必须发送总线停止条件。不然在发送读命令时，从机将不能产生Don’t care响</summary><published>2012-05-06T02:38:00Z</published><updated>2012-05-06T02:38:00Z</updated><author><name>CrazyBingo</name><uri>http://www.cnblogs.com/crazybingo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/crazybingo/archive/2012/05/06/2485672.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/crazybingo/archive/2012/05/06/2485672.html"/><content type="html">&lt;table class="seyle4" style="width: 100%;" border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content9" valign="center"&gt;&lt;p&gt;&lt;strong&gt;转载地址：&lt;a href="http://blog.21ic.com/user1/2524/archives/2008/49949.html"&gt;user1/2524/archives/2008/49949.html&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;SCCB总线&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div align="right"&gt;&lt;span class="textbox-label"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table style="width: 100%;" border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td height="3"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;/p&gt;&lt;table style="width: 100%;" border="0" cellspacing="0" cellpadding="0" align="center"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="digg_list"&gt;&lt;div class="digg_number"&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="digg_submit"&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;SCCB是简化的I2C协议，SIO-l是串行时钟输入线，SIO-O是串行双向数据线，分别相当于I2C协议的SCL和SDA。SCCB的总线时序与I2C基本相同，它的响应信号ACK被称为一个传输单元的第9位，分为Don&amp;rsquo;t care和NA。Don&amp;rsquo;t care位由从机产生;NA位由主机产生，由于SCCB不支持多字节的读写，NA位必须为高电平。另外，SCCB没有重复起始的概念，因此在SCCB的读周期中，当主机发送完片内寄存器地址后，必须发送总线停止条件。不然在发送读命令时，从机将不能产生Don&amp;rsquo;t care响应信号。&lt;br /&gt;&lt;br /&gt;由于I2C和SCCB的一些细微差别，所以采用GPIO模拟SCCB总线的方式。SCL所连接的引脚始终设为输出方式，而SDA所连接的引脚在数据传输过程中，通过设置IODIR的值，动态改变引脚的输入/输出方式。SCCB的写周期直接使用I2C总线协议的写周期时序;而SC-CB的读周期，则增加一个总线停止条件。&lt;/p&gt;&lt;p&gt;SCCB是和I2C相同的一个协议。&amp;nbsp; &amp;nbsp; SIO_C和SIO_D分别为SCCB总线的时钟线和数据线。目前，SCCB总线通信协议只支持100Kb/s或400Kb/s的传输速度，并且支持两种地址形式：①从设备地址（ID Address，8bit），分为读地址和写地址，高7位用于选中芯片， 第0位是读/写控制位（R/W），决定是对该芯片进行读或写操作；②内部寄存器单元地址（Sub_ Address，8bit），用于决定对内部的哪个寄存器单元进行操作，通常还支持地址单元连续的多字节顺序读写操作。SCCB控制总线功能的实现完全是依靠SIO_C、SIO_D两条总线上电平的状态以及两者之间的相互配合实现的。SCCB总线传输的启动和停止条件如图&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;过程：采用简单的三相(Phase)写数据的方式，即在写寄存器的过程中先发送OV7649的ID地址（ID Address），然后发送写数据的目地寄存器地址（Sub_address），最后发送要写入的数据（Write Data）,见图3。如果给连续的寄存器写数据，写完一个寄存器后，OV7649会自动把寄存器地址加1，程序可继续向下写，而不需要再次输入ID地址，从而三相写数据变为了两相写数据，由于本系统只需对有限个不连续寄存器进行配置，如果采用对全部寄存器都加以配置这一方法的话，会浪费很多时间和资源，所以我们只对需要更改数据的寄存器进行写数据。对于每一个需更改的寄存器，都采用三相写数据的方法。&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://www.cnblogs.com/crazybingo/aggbug/2485672.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/crazybingo/archive/2012/05/06/2485672.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/crazybingo/archive/2012/03/31/2426226.html</id><title type="text">I2C与OV9650的问题</title><summary type="text">转：http://www.likeint.com/news_show.asp?id=1319&amp;SonID=139之前做摄像头方面的测试，现在写一些总结：原计划使用I2C接OV9650的SCCB接口，SDA接SIO_D，CLK接SIO_C口，由于SCCB和I2C标准协议类似，就可以用标准的I2C协议中的函数直接对OV9650中的寄存器进行配置，比较简单。就没有考虑其他的内容，后来发现这个思路行不通。把摄像头接到I2C总线上后，就使用Iprobe命令探测I2C设备，结果没有发现摄像头，然后用示波器检测各个引脚的电压，发现电压均正常，但是没有时钟输入信号，后来查阅手册，发现摄像头的时钟由CS</summary><published>2012-03-30T16:00:00Z</published><updated>2012-03-30T16:00:00Z</updated><author><name>CrazyBingo</name><uri>http://www.cnblogs.com/crazybingo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/crazybingo/archive/2012/03/31/2426226.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/crazybingo/archive/2012/03/31/2426226.html"/><content type="html">&lt;p&gt;转：http://www.likeint.com/news_show.asp?id=1319&amp;amp;SonID=139&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;之前做摄像头方面的测试，现在写一些总结：&lt;/p&gt;&lt;p&gt;原计划使用I2C接OV9650的SCCB接口，SDA接SIO_D，CLK接SIO_C口，由于SCCB和I2C标准协议类似，就可以用标准的I2C协议中的函数直接对OV9650中的寄存器进行配置，比较简单。就没有考虑其他的内容，后来发现这个思路行不通。&lt;/p&gt;&lt;p&gt;把摄像头接到I2C总线上后，就使用Iprobe命令探测I2C设备，结果没有发现摄像头，然后用示波器检测各个引脚的电压，发现电压均正常，但是没有时钟输入信号，后来查阅手册，发现摄像头的时钟由CSI控制，在CSI的寄存器中，有一位专门负责打开与关闭输出时钟，默认情况下，设置为关闭，将这一位设置为打开。然后用Iprobe命令探测，结果出现了摄像头的设备号，为30。&lt;/p&gt;&lt;p&gt;然后用I2C的读写命令操作摄像头的寄存器，结果失败，经过几天的网上搜索，原来是SCCB与I2C标准协议有微小的差别，就是这个微小的差别，导致不能用标准的I2C协议读写OV9650的寄存器。&lt;/p&gt;&lt;p&gt;差别如下：&lt;/p&gt;&lt;p&gt;OV79650控制采用SCCB(SeriaI Camera ControlBus)协议。SCCB是简化I2C协议，SIO-l是串行时钟输入线，SIO-O是串行双向数据线，分别相当于I2C协议SCL和SDA。SCCB总线时序与I2C基本相同，它响应信号ACK被称为一个传输单元第9位，分为Don&amp;rsquo;t care和NA。Don&amp;rsquo;t care位由从机产生；NA位由主机产生，由于SCCB不支持多字节读写，NA位必须为高电平。另外，SCCB没有重复起始概念，因此在SCCB读周期中，当主机发送完片内寄存器地址后，必须发送总线停止条件。不然在发送读命令时，从机将不能产生Don&amp;rsquo;t care响应信号。&amp;nbsp;&lt;br /&gt;由于I2C和SCCB一些细微差别，所以采用GPIO模拟SCCB总线方式。SCL所连接引脚始终设为输出方式，而SDA所连接引脚在数据传输过程中，通过设置IODIR值，动态改变引脚输入／输出方式。SCCB写周期直接使用I2C总线协议写周期时序；而SC-CB读周期，则增加一个。&lt;/p&gt;&lt;p&gt;另外，SCCB的地址位为8位，即第60,61分别为读写位，但I2C协议地址为7位，所以检索到的地址是30。&lt;/p&gt;&lt;p&gt;网上大部分采用GPIO模拟I2C协议，由于使用标准的I2C协议行不通，只好换用GPIO模拟I2C协议。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/crazybingo/aggbug/2426226.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/crazybingo/archive/2012/03/31/2426226.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/crazybingo/archive/2012/03/27/2420045.html</id><title type="text">STM32 FSMC学习笔记+补充（LCD的FSMC配置）</title><summary type="text">许某人：http://blog.csdn.net/hduxyc/article/details/6426463 FSMC全称“静态存储器控制器”。 使用FSMC控制器后，可以把FSMC提供的FSMC_A[25:0]作为地址线，而把FSMC提供的FSMC_D[15:0]作为数据总线。 (1)当存储数据设为8位时，(FSMC_NANDInitStructure.FSMC_MemoryDat...</summary><published>2012-03-27T11:23:00Z</published><updated>2012-03-27T11:23:00Z</updated><author><name>CrazyBingo</name><uri>http://www.cnblogs.com/crazybingo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/crazybingo/archive/2012/03/27/2420045.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/crazybingo/archive/2012/03/27/2420045.html"/><content type="html">&lt;p&gt;许某人：&lt;a title="http://blog.csdn.net/hduxyc/article/details/6426463" href="http://blog.csdn.net/hduxyc/article/details/6426463"&gt;http://blog.csdn.net/hduxyc/article/details/6426463&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;FSMC全称“静态存储器控制器”。&lt;/p&gt;  &lt;p&gt;使用FSMC控制器后，可以把FSMC提供的FSMC_A[25:0]作为地址线，而把FSMC提供的FSMC_D[15:0]作为数据总线。&lt;/p&gt;  &lt;p&gt;(1)当存储数据设为8位时，(FSMC_NANDInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b)&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 地址各位对应FSMC_A[25:0]，数据位对应FSMC_D[7:0]&lt;/p&gt;  &lt;p&gt;(2)当存储数据设为16位时，(FSMC_NANDInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b)&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 地址各位对应FSMC_A[24:0]，数据位对应FSMC_D[15:0]&lt;/p&gt;  &lt;p&gt;FSMC 包括4个模块：&lt;/p&gt;  &lt;p&gt;(1)AHB接口（包括FSMC配置寄存器）&lt;/p&gt;  &lt;p&gt;(2)NOR闪存和PSRAM控制器（驱动LCD的时候LCD就好像一个PSRAM的里面只有2个16位的存储空间，一个是DATA RAM 一个是CMD RAM）&lt;/p&gt;  &lt;p&gt;(3)NAND闪存和PC卡控制器&lt;/p&gt;  &lt;p&gt;(4)外部设备接口&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;注&lt;/strong&gt;：FSMC可以请求AHB进行数据宽度的操作。如果AHB操作的数据宽度大于外部设备（NOR或NAND或LCD）的宽度，此时FSMC将AHB操作分割成几个连续的较小的数据宽度，以适应外部设备的数据宽度&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/crazybingo/201203/201203271922014978.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/crazybingo/201203/20120327192216112.png" width="542" height="519" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;FSMC对外部设备的地址映像从0x6000 0000开始，到0x9FFF FFFF结束，共分4个地址块，每个地址块256M字节。可以看出，每个地址块又分为4个分地址块，大小64M。对NOR的地址映像来说，我们可以通过选择HADDR[27:26]来确定当前使用的是哪个64M的分地址块，如下页表格。而这四个分存储块的片选，则使用NE[4:1]来选择。数据线/地址线/控制线是共享的。&lt;/p&gt;  &lt;p&gt;NE1 -&amp;gt;Bank1&amp;#160;&amp;#160; NE2-&amp;gt;Bank2&amp;#160; NE3-&amp;gt;Bank3&amp;#160; NE4-&amp;gt;Bank4&lt;/p&gt;  &lt;p&gt;若 NE1 连接， 则&lt;/p&gt; &lt;a href="http://images.cnblogs.com/cnblogs_com/crazybingo/201203/201203271922287711.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/crazybingo/201203/201203271922318984.png" width="648" height="191" /&gt;&lt;/a&gt;   &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;每小块NOR/PSRAM 64M&lt;/p&gt;  &lt;p&gt; 第一块:6000 0000h--63ff ffffh (DATA长度为8位情况下,由地址线FSMC_A[25:0]决定；DATA长度为16位情况下，由地址线FSMC_A[24:0]决定)&lt;/p&gt;  &lt;p&gt; 第二块:6400 0000h--67ff ffffh&lt;/p&gt;  &lt;p&gt; 第二块:6800 0000h--6bff ffffh&lt;/p&gt;  &lt;p&gt; 第三块:6c00 0000h--6fff ffffh&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;注：&lt;/strong&gt;这里的HADDR是需要转换到外部设备的内部AHB地址线，每个地址对应一个字节单元。因此，若外部设备的地址宽度是8位的，则HADDR[25:0]与STM32的CPU引脚FSMC_A[25:0]一一对应，最大可以访问64M字节的空间。若外部设备的地址宽度是16位的，则是HADDR[25:1]与STM32的CPU引脚FSMC_A[24:0]一一对应。在应用的时候，可以将FSMC_A总线连接到存储器或其他外设的地址总线引脚上。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;例：STM32F10XX FCMS控制LCD的驱动&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;FSMC提供了所有的LCD控制器的信号：&lt;/p&gt;  &lt;p&gt;STM32f10xxx FSMC有四个不同banks(每个64M字节)考研支持NOR、nand等其他类似的存储器。这些外部设备的地址线，数据先和控制线是共享的。每个设备的访问通过片选来决定，而每次只能访问一个设备&lt;/p&gt;  &lt;p&gt;FSMC_D[16:0] -&amp;gt;16bit地址总线&lt;/p&gt;  &lt;p&gt;FSMC NEx：分配给NOR的256M，再分成4个区。每个区用来分配一个外设，这四个外设的片选：NE1-NE4，对应的不同的引脚&lt;/p&gt;  &lt;p&gt;FSMC NOE：输出使能，连接LCD的RD脚&lt;/p&gt;  &lt;p&gt;FSMC NWE：写使能，连接LCD的RW脚&lt;/p&gt;  &lt;p&gt;FSMC Ax：用在LCD显示RAM和寄存器之间进行选择的地址线，即该线用于选择LCD的RS脚，该线可用地址线的任意一根线，范围：FSMC_A[25:0]。（RS=0表示指令，RS=1表示数据）&lt;/p&gt;  &lt;p&gt;例：选择NOR的第一个存储区，并且使用FSMC_A16来控制LCD的RS引脚，则我们访问LCD显示RAM的基址为0x60020000 LCD命令寄存器地址为：0x60000000&lt;/p&gt;  &lt;p&gt;例：选择NOR的第四个存储区，并且使用FSMC_A0来控制LCD的RS引脚，则我们访问LCD显示RAM的基址为0x6C000002 LCD命令寄存器地址为：0x6C000000&lt;/p&gt;&lt;img src="http://www.cnblogs.com/crazybingo/aggbug/2420045.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/crazybingo/archive/2012/03/27/2420045.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/crazybingo/archive/2012/03/27/2420039.html</id><title type="text">NAND FLASH 驱动笔记（型号HY27UF081G2A）</title><summary type="text">许某人博文： http://blog.csdn.net/hduxyc/article/details/6426286</summary><published>2012-03-27T11:16:00Z</published><updated>2012-03-27T11:16:00Z</updated><author><name>CrazyBingo</name><uri>http://www.cnblogs.com/crazybingo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/crazybingo/archive/2012/03/27/2420039.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/crazybingo/archive/2012/03/27/2420039.html"/><content type="html">&lt;p&gt;许某人博文：&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blog.csdn.net/hduxyc/article/details/6426286" href="http://blog.csdn.net/hduxyc/article/details/6426286"&gt;http://blog.csdn.net/hduxyc/article/details/6426286&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/crazybingo/aggbug/2420039.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/crazybingo/archive/2012/03/27/2420039.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/crazybingo/archive/2012/03/24/2416239.html</id><title type="text">STM32中断优先级和开关总中断</title><summary type="text">一，中断优先级： STM32(Cortex-M3)中的优先级概念 STM32(Cortex-M3)中有两个优先级的概念——抢占式优先级和响应优先级，有人把响应优先级称作'亚优先级'或'副优先级'，每个中断源都需要被指定这两种优先级。 具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应，即中断嵌套，或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断。 ...</summary><published>2012-03-24T15:51:00Z</published><updated>2012-03-24T15:51:00Z</updated><author><name>CrazyBingo</name><uri>http://www.cnblogs.com/crazybingo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/crazybingo/archive/2012/03/24/2416239.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/crazybingo/archive/2012/03/24/2416239.html"/><content type="html">&lt;p&gt;一，&lt;strong&gt;中断优先级&lt;/strong&gt;：    &lt;br /&gt;&lt;strong&gt;STM32&lt;/strong&gt;(Cortex-M3)中的优先级概念    &lt;br /&gt;&lt;strong&gt;STM32&lt;/strong&gt;(Cortex-M3)中有两个优先级的概念——抢占式优先级和响应优先级，有人把响应优先级称作'亚优先级'或'副优先级'，每个中断源都需要被指定这两种优先级。    &lt;br /&gt;具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应，即中断嵌套，或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断。    &lt;br /&gt;当两个中断源的抢占式优先级相同时，这两个中断将没有嵌套关系，当一个中断到来后，如果正在处理另一个中断，这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达，则中断控制器根据他们的响应优先级高低来决定先处理哪一个；如果他们的抢占式优先级和响应优先级都相等，则根据他们在中断表中的排位顺序决定先处理哪一个。    &lt;br /&gt;既然每个中断源都需要被指定这两种优先级，就需要有相应的寄存器位记录每个中断的优先级；在Cortex-M3 中定义了8个比特位用于设置中断源的优先级，这8个比特位可以有8种分配方式，如下：    &lt;br /&gt;所有8位用于指定响应优先级    &lt;br /&gt;最高1位用于指定抢占式优先级，最低7位用于指定响应优先级    &lt;br /&gt;最高2位用于指定抢占式优先级，最低6位用于指定响应优先级    &lt;br /&gt;最高3位用于指定抢占式优先级，最低5位用于指定响应优先级    &lt;br /&gt;最高4位用于指定抢占式优先级，最低4位用于指定响应优先级    &lt;br /&gt;最高5位用于指定抢占式优先级，最低3位用于指定响应优先级    &lt;br /&gt;最高6位用于指定抢占式优先级，最低2位用于指定响应优先级    &lt;br /&gt;最高7位用于指定抢占式优先级，最低1位用于指定响应优先级    &lt;br /&gt;这就是优先级分组的概念。    &lt;br /&gt;--------------------------------------------------------------------------------    &lt;br /&gt;Cortex-M3允许具有较少中断源时使用较少的寄存器位指定中断源的优先级，因此&lt;strong&gt;STM32&lt;/strong&gt;把指定&lt;strong&gt;中断优先级&lt;/strong&gt;的寄存器位减少到4位，这4个寄存器位的分组方式如下：    &lt;br /&gt;第0组：所有4位用于指定响应优先级    &lt;br /&gt;第1组：最高1位用于指定抢占式优先级，最低3位用于指定响应优先级    &lt;br /&gt;第2组：最高2位用于指定抢占式优先级，最低2位用于指定响应优先级    &lt;br /&gt;第3组：最高3位用于指定抢占式优先级，最低1位用于指定响应优先级    &lt;br /&gt;第4组：所有4位用于指定抢占式优先级    &lt;br /&gt;可以通过调用&lt;strong&gt;STM32&lt;/strong&gt;的固件库中的函数NVIC_PriorityGroupConfig()选择使用哪种优先级分组方式，这个函数的参数有下列5种：    &lt;br /&gt;NVIC_PriorityGroup_0 =&amp;gt; 选择第0组    &lt;br /&gt;NVIC_PriorityGroup_1 =&amp;gt; 选择第1组    &lt;br /&gt;NVIC_PriorityGroup_2 =&amp;gt; 选择第2组    &lt;br /&gt;NVIC_PriorityGroup_3 =&amp;gt; 选择第3组    &lt;br /&gt;NVIC_PriorityGroup_4 =&amp;gt; 选择第4组    &lt;br /&gt;接下来就是指定中断源的优先级，下面以一个简单的例子说明如何指定中断源的抢占式优先级和响应优先级：    &lt;br /&gt;// 选择使用优先级分组第1组    &lt;br /&gt;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);    &lt;br /&gt;// 使能EXTI0中断    &lt;br /&gt;NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel;    &lt;br /&gt;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; // 指定抢占式优先级别1    &lt;br /&gt;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // 指定响应优先级别0    &lt;br /&gt;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;    &lt;br /&gt;NVIC_Init(&amp;amp;NVIC_InitStructure);    &lt;br /&gt;// 使能EXTI9_5中断    &lt;br /&gt;NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;    &lt;br /&gt;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; // 指定抢占式优先级别0    &lt;br /&gt;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; // 指定响应优先级别1    &lt;br /&gt;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;    &lt;br /&gt;NVIC_Init(&amp;amp;NVIC_InitStructure);    &lt;br /&gt;要注意的几点是：    &lt;br /&gt;1）如果指定的抢占式优先级别或响应优先级别超出了选定的优先级分组所限定的范围，将可能得到意想不到的结果；    &lt;br /&gt;2）抢占式优先级别相同的中断源之间没有嵌套关系；    &lt;br /&gt;3）如果某个中断源被指定为某个抢占式优先级别，又没有其它中断源处于同一个抢占式优先级别，则可以为这个中断源指定任意有效的响应优先级别。    &lt;br /&gt;二，开关总中断：    &lt;br /&gt;在&lt;strong&gt;STM32&lt;/strong&gt;/Cortex-M3中是通过改变CPU的当前优先级来允许或禁止中断。    &lt;br /&gt;PRIMASK位：只允许NMI和hard fault异常，其他中断/ 异常都被屏蔽(当前CPU优先级=0)。    &lt;br /&gt;FAULTMASK位：只允许NMI，其他所有中断/异常都被屏蔽(当前CPU优先级=-1)。    &lt;br /&gt;在&lt;strong&gt;STM32&lt;/strong&gt;固件库中(stm32f10x_nvic.c和stm32f10x_nvic.h) 定义了四个函数操作PRIMASK位和FAULTMASK位，改变CPU的当前优先级，从而达到控制所有中断的目的。&lt;/p&gt;  &lt;p&gt;在3.0的库中&amp;#160; 已经没有   &lt;br /&gt;第一种方法：    &lt;br /&gt;NVIC_SETPRIMASK()；&amp;#160;&amp;#160; //关闭总中断    &lt;br /&gt;NVIC_RESETPRIMASK()；//开放总中断    &lt;br /&gt;第二种方法：    &lt;br /&gt;NVIC_SETFAULTMASK()；&amp;#160;&amp;#160; //关闭总中断    &lt;br /&gt;NVIC_RESETFAULTMASK()；//开放总中断    &lt;br /&gt;补充 可以用    &lt;br /&gt;#define CLI()&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; __set_PRIMASK(1)&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;#define SEI()&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; __set_PRIMASK(0)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;抢占优先级高啊，抢占优先级高的中断可以打断抢占优先级低的中断，这时是不用管响应优先级的；响应优先级只是在两个或者多个抢占优先级相同的中断同时到来时进入响应优先级高的中断，而如果进入这个中断之后再来一个抢占优先级相同但是响应优先级更高的中断，则不会打断已有的中断。   &lt;br /&gt;总之就是抢占优先级不同的时候看抢占优先级级数，先响应抢占优先级高的中断，而且抢占优先级高的中断可以打断抢占优先级低的中断；当抢占优先级相同的时候看响应优先级级数，先响应响应优先级高的中断，但是响应优先级高的中断不可以打断响应优先级低的中断；    &lt;br /&gt;不知楼上的明白了吗？要是还不明白的话你就把 NVIC_PriorityGroup_4 =&amp;gt; 选择第4组，所有的4位用于响应抢占优先级，这样就简单了不会迷糊了。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/crazybingo/aggbug/2416239.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/crazybingo/archive/2012/03/24/2416239.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/crazybingo/archive/2012/03/24/2416138.html</id><title type="text">番茄炒蛋盖浇饭</title><summary type="text">1 准备材料。 2 番茄去皮切块。鸡蛋加少许料酒和水打散成蛋液。 @美食天下 MeiShiChina.Com 3 炒锅倒油，油烧至8成热时，倒入鸡蛋，并用铲子迅速搅散，盛出备用。 4 锅中再倒油，油7成热时，倒...</summary><published>2012-03-24T14:33:00Z</published><updated>2012-03-24T14:33:00Z</updated><author><name>CrazyBingo</name><uri>http://www.cnblogs.com/crazybingo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/crazybingo/archive/2012/03/24/2416138.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/crazybingo/archive/2012/03/24/2416138.html"/><content type="html">&lt;ul&gt;   &lt;li&gt;     &lt;p&gt;1&lt;/p&gt;      &lt;p&gt;&lt;img border="0" src="http://i3.meishichina.com/attachment/recipe/201106/m_201106031219156.jpg" width="180" /&gt;        &lt;br /&gt;准备材料。&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;2&lt;/p&gt;      &lt;p&gt;&lt;img border="0" src="http://i3.meishichina.com/attachment/recipe/201106/m_201106031219241.jpg" width="180" /&gt;        &lt;br /&gt;番茄去皮切块。鸡蛋加少许料酒和水打散成蛋液。 @美食天下 MeiShiChina.Com&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;3&lt;/p&gt;      &lt;p&gt;&lt;img border="0" src="http://i3.meishichina.com/attachment/recipe/201106/m_201106031219360.jpg" width="180" /&gt;        &lt;br /&gt;炒锅倒油，油烧至8成热时，倒入鸡蛋，并用铲子迅速搅散，盛出备用。&lt;/p&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;p&gt;4&lt;/p&gt;      &lt;p&gt;&lt;img border="0" src="http://i3.meishichina.com/attachment/recipe/201106/m_201106031219433.jpg" width="180" /&gt;        &lt;br /&gt;锅中再倒油，油7成热时，倒入去皮的西红柿块，煸炒2钟，炒至西红柿出汤。&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;5&lt;/p&gt;      &lt;p&gt;&lt;img border="0" src="http://i3.meishichina.com/attachment/recipe/201106/m_201106031219531.jpg" width="180" /&gt;        &lt;br /&gt;调入少许白糖和番茄沙司和少许水炒匀。（如果不做盖浇饭就不需要加水，我喜欢这个汤拌米饭吃，所以每次都会加一点水）&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;6&lt;/p&gt;      &lt;p&gt;&lt;img border="0" src="http://i3.meishichina.com/attachment/recipe/201106/m_201106031220023.jpg" width="180" /&gt;        &lt;br /&gt;加入炒好的鸡蛋翻炒。&lt;/p&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;p&gt;7&lt;/p&gt;      &lt;p&gt;&lt;img border="0" src="http://i3.meishichina.com/attachment/recipe/201106/m_201106031220133.jpg" width="180" /&gt;        &lt;br /&gt;最后调入适量盐和葱炒匀即可。 @美食天下 MeiShiChina.Com&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;8&lt;/p&gt;      &lt;p&gt;&lt;img border="0" src="http://i3.meishichina.com/attachment/recipe/201106/m_201106031220209.jpg" width="180" /&gt;        &lt;br /&gt;配上米饭就是美美的番茄炒蛋盖浇饭啦。&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;9&lt;/p&gt;      &lt;p&gt;&lt;img border="0" src="http://i3.meishichina.com/attachment/recipe/201106/m_201106031220472.jpg" width="180" /&gt;        &lt;br /&gt;单独吃也好吃。&lt;/p&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;&lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;小贴士&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;番茄巧去皮小贴士：   &lt;br /&gt;1、用刀在番茄上划一个十字刀口，用叉子叉住西红柿的底部，放在火上烤10秒钟，待表皮裂开后，就可以轻松撕去西红柿皮。    &lt;br /&gt;2、用沸水绰烫后去皮。    &lt;br /&gt;还有啊要买皮薄汤汁多的西红柿炒出来最好吃，尽量挑选圆、红、色泽鲜亮一点的，没有棱角没有尖角的西红柿，那种西红柿皮厚汤汁少，口感不是很好。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/crazybingo/aggbug/2416138.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/crazybingo/archive/2012/03/24/2416138.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/crazybingo/archive/2012/03/24/2415612.html</id><title type="text">STM32使用ST库新建工程</title><summary type="text">跟着 “野老板” 学 新建工程。。。 文件目录： 工作组： 加入宏：USE_STDPERIPH_DRIVER,STM32F10X_HD（为了使用ST的库） 加入库路径（屏蔽编译器自带库，防止不兼容） Output设置 JLink设置 板子上电插JTAG-USB会自动配置 添加CPU支持的Flash ...</summary><published>2012-03-24T08:42:00Z</published><updated>2012-03-24T08:42:00Z</updated><author><name>CrazyBingo</name><uri>http://www.cnblogs.com/crazybingo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/crazybingo/archive/2012/03/24/2415612.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/crazybingo/archive/2012/03/24/2415612.html"/><content type="html">&lt;p&gt;跟着 “野老板” 学 新建工程。。。&lt;/p&gt;  &lt;p&gt;文件目录：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/crazybingo/201203/201203241642011388.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/crazybingo/201203/201203241642026829.png" width="555" height="93" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;工作组：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/crazybingo/201203/20120324164203110.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/crazybingo/201203/201203241642042420.png" width="221" height="180" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;加入宏：USE_STDPERIPH_DRIVER,STM32F10X_HD（为了使用ST的库）&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/crazybingo/201203/201203241642062288.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/crazybingo/201203/201203241642063858.png" width="590" height="82" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;加入库路径（屏蔽编译器自带库，防止不兼容）&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/crazybingo/201203/201203241642077696.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/crazybingo/201203/201203241642097498.png" width="586" height="125" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/crazybingo/201203/201203241642093528.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/crazybingo/201203/201203241642109351.png" width="466" height="91" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Output设置&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/crazybingo/201203/201203241642118662.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/crazybingo/201203/201203241642128247.png" width="568" height="190" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;JLink设置&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/crazybingo/201203/201203242058524024.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/crazybingo/201203/201203242059062473.png" width="600" height="183" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;板子上电插JTAG-USB会自动配置&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/crazybingo/201203/201203241642164263.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/crazybingo/201203/201203241642187097.png" width="624" height="279" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;添加CPU支持的Flash&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/crazybingo/201203/201203241642191915.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/crazybingo/201203/201203241642215621.png" width="514" height="223" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/crazybingo/201203/201203241642224093.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/crazybingo/201203/201203241642237931.png" width="585" height="183" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;很重要的一点，如果你用了fputc重定义，想用printf函数，这个地方一定要设置一下。。我就因为这个坑爹了很久，谢谢野老板的提醒！&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/crazybingo/201203/201203281117572436.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/crazybingo/201203/201203281117574912.png" width="347" height="134" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/crazybingo/201203/201203281117586307.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/crazybingo/201203/201203281117585751.png" width="498" height="188" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/crazybingo/aggbug/2415612.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/crazybingo/archive/2012/03/24/2415612.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
