<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>单片机开发,MCU开发网,电子设计</title>
	<atom:link href="http://mcukaifa.com/feed" rel="self" type="application/rss+xml" />
	<link>http://mcukaifa.com</link>
	<description>做最优秀的电子开发团队</description>
	<lastBuildDate>Sat, 12 Jun 2010 07:32:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>磁珠与电感的作用与区别</title>
		<link>http://mcukaifa.com/%e6%9c%aa%e5%88%86%e7%b1%bb/189.html</link>
		<comments>http://mcukaifa.com/%e6%9c%aa%e5%88%86%e7%b1%bb/189.html#comments</comments>
		<pubDate>Sat, 12 Jun 2010 07:30:37 +0000</pubDate>
		<dc:creator>sowait</dc:creator>
				<category><![CDATA[未分类]]></category>
		<category><![CDATA[硬件设计]]></category>
		<category><![CDATA[电感]]></category>
		<category><![CDATA[磁珠]]></category>

		<guid isPermaLink="false">http://mcukaifa.com/?p=189</guid>
		<description><![CDATA[此文来至网络
<a title="点击看大图" href="http://mcukaifa.com/wp-content/uploads/auto_save_image/2010/06/153037iEL.jpg" target="_blank"><img src="http://mcukaifa.com/wp-content/uploads/auto_save_image/2010/06/153037iEL.jpg" alt="" /></a>
理论上对传导干扰信号进行抑制，要求抑制<a href="http://mcukaifa.com/tag/%e7%94%b5%e6%84%9f" title="查看 电感 的全部文章" target="_blank">电感</a>的电感量越大越好，但对于电感线圈来说，电感量越大，则电感线圈的分布电容也越大，两者的作用将会互相抵消。[......]<p class='read-more'><a href='http://mcukaifa.com/%e6%9c%aa%e5%88%86%e7%b1%bb/189.html'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p>此文来至网络</p>
<p><a title="点击看大图" href="http://mcukaifa.com/wp-content/uploads/auto_save_image/2010/06/153037iEL.jpg" target="_blank"><img src="http://mcukaifa.com/wp-content/uploads/auto_save_image/2010/06/153037iEL.jpg" alt="" /></a></p>
<p>理论上对传导干扰信号进行抑制，要求抑制<span class='wp_keywordlink_affiliate'><a href="http://mcukaifa.com/tag/%e7%94%b5%e6%84%9f" title="查看 电感 的全部文章" target="_blank">电感</a></span>的<span class='wp_keywordlink_affiliate'><a href="http://mcukaifa.com/tag/%e7%94%b5%e6%84%9f" title="查看 电感 的全部文章" target="_blank">电感</a></span>量越大越好，但对于电感线圈来说，电感量越大，则电感线圈的分布电容也越大，两者的作用将会互相抵消。</p>
<p><a title="点击看大图" href="http://mcukaifa.com/wp-content/uploads/auto_save_image/2010/06/1530381JN.jpg" target="_blank"><img src="http://mcukaifa.com/wp-content/uploads/auto_save_image/2010/06/1530381JN.jpg" alt="" /></a></p>
<p>图2是普通电感线圈的阻抗与频率的关系图，由图中可以看出，电感线圈的阻抗开始的时候是随着频率升高而增大的，但当它的阻抗增大到最大值以后，阻抗反而随着频率升高而迅速下降，这是因为并联分布电容的作用。当阻抗增到最大值的地方，就是电感线圈的分布电容与等效电感产生并联谐振的地方。图中，L1 &gt; L2 &gt; L3，由此可知电感线圈的电感量越大，其谐振频率就越低。从图2中可以看出，如果要对频率为1MHz的干扰信号进行抑制，选用L1倒不如选用L3，因为L3的电感量要比L1小十几倍，因此L3的成本也要比L1低很多。</p>
<p>如果我们还要对抑制频率进一步提高，那么我们最后选用的电感线圈就只好是它的最小极限值，只有1圈或不到1圈了。<span class='wp_keywordlink_affiliate'><a href="http://mcukaifa.com/tag/%e7%a3%81%e7%8f%a0" title="查看 磁珠 的全部文章" target="_blank">磁珠</a></span>，即穿心电感，就是一个匝数小于1圈的电感线圈。但穿心电感比单圈电感线圈的分布电容小好几倍到几十倍，因此，穿心电感比单圈电感线圈的工作频率更高。</p>
<p>穿心电感的电感量一般都比较小，大约在几微亨到几十微亨之间，电感量大小与穿心电感中导线的大小以及长度，还有磁珠的截面积都有关系，但与磁珠电感量关系最大的还要算磁珠的相对导磁率<a title="点击看大图" href="http://mcukaifa.com/wp-content/uploads/auto_save_image/2010/06/1530381vS.gif" target="_blank"><img src="http://mcukaifa.com/wp-content/uploads/auto_save_image/2010/06/1530381vS.gif" alt="" width="21" height="24" /></a> 。图3、图4是分别是指导线和穿心电感的原理图，计算穿心电感时，首先要计算一根圆截面直导线的电感，然后计算结果乘上磁珠相对导磁率 就可以求出穿心电感的电感量。</p>
<p><a title="点击看大图" href="http://mcukaifa.com/wp-content/uploads/auto_save_image/2010/06/153038DqP.jpg" target="_blank"><img src="http://mcukaifa.com/wp-content/uploads/auto_save_image/2010/06/153038DqP.jpg" alt="" /></a></p>
<p><a title="点击看大图" href="http://mcukaifa.com/wp-content/uploads/auto_save_image/2010/06/153038Euy.jpg" target="_blank"><img src="http://mcukaifa.com/wp-content/uploads/auto_save_image/2010/06/153038Euy.jpg" alt="" /></a></p>
<p>另外，当穿心电感的工作频率很高时，在磁珠体内还会产生涡流，这相当于穿心电感的导磁率要降低，此时，我们一般都使用有效导磁率 。有效导磁率 就是在某个工作频率之下，磁珠的相对导磁率。但由于磁珠的工作频率都只是一个范围，因此在实际应用中多用平均导磁率 。</p>
<p>在低频时，一般磁珠的相对导磁率都很大（大于100），但在高频时其有效导磁率只有相对导磁率的几分之一，甚至几十分之一。因此，磁珠也有截止频率的问题，所谓截止频率，就是使磁珠的有效导磁率下降到接近1时的工作频率fc，此时磁珠已经失去一个电感的作用。一般磁珠的截止频率fc都在30～300MHz之间，截止频率的高低与磁珠的材料有关，一般导磁率越高的磁芯材料，其截止频率fc反而越低，因为低频磁芯材料涡流损耗比较大。使用者在进行电路设计的时候，可要求磁芯材料的提供商提供磁芯工作频率与有效导磁率 的测试数据，或穿心电感在不同工作频率之下的曲线图。图5是穿心电感的频率曲线图。</p>
<p><a title="点击看大图" href="http://mcukaifa.com/wp-content/uploads/auto_save_image/2010/06/1530383nB.jpg" target="_blank"><img src="http://mcukaifa.com/wp-content/uploads/auto_save_image/2010/06/1530383nB.jpg" alt="" width="345" height="285" /></a></p>
<p>磁珠另一个用途就是用来做电磁屏蔽，它的电磁屏蔽效果比屏蔽线的屏蔽效果还要好，这是一般人不太注意的。其使用方法就是让一双导线从磁珠中间穿过，那么当有电流从双导线中流过时，其产生的磁场将大部份集中在磁珠体内，磁场不会再向外辐射；由于磁场在磁珠体内会产生涡流，涡流产生电力线的方向与导体表面电力线的方向正好相反，互相可以抵消，因此，磁珠对于电场同样有屏蔽作用，即：磁珠对导体中的电磁场有很强的屏蔽作用。</p>
<p>使用磁珠进行电磁屏蔽的优点是磁珠不用接地，可以免去屏蔽线要求接地的麻烦。用磁珠作为电磁屏蔽，对于双导线来说，还相当于在线路中接了一个共模抑制电感，对共模干扰信号有很强的抑制作用。</p>
<p>由此可知，电感线圈主要是用于对低频干扰信号进行EMI抑制，而磁珠主要是对高频干扰信号进行EMI抑制，因此，对一个频带很宽的干扰信号进行EMI抑制，必须同时采用多个不同性质的电感才会有效。另外，对共模传导干扰信号进行EMI抑制，还要注意抑制电感与Y电容的连接位置。Y电容和抑制电感尽量靠近电源的输入端，即电源插座的位置，并且高频电感要尽量靠近Y电容，而Y电容还要尽量靠近与大地连接的地线（三心电源线的地线），这对EMI抑制才有效。</p>
<p><strong>附件：</strong></p>
<p>1、圆截面直导线电感与穿芯电感的计算：</p>
<p>如图3所示圆截面直导线，其电感为：</p>
<p><a title="点击看大图" href="http://mcukaifa.com/wp-content/uploads/auto_save_image/2010/06/153039GkX.gif" target="_blank"><img src="http://mcukaifa.com/wp-content/uploads/auto_save_image/2010/06/153039GkX.gif" alt="" width="140" height="42" /></a> [H]          （1）</p>
<p>其中：</p>
<p>L：圆截面直导线的电感[H]</p>
<p><a title="点击看大图" href="http://mcukaifa.com/wp-content/uploads/auto_save_image/2010/06/1530390Jf.gif" target="_blank"><img src="http://mcukaifa.com/wp-content/uploads/auto_save_image/2010/06/1530390Jf.gif" alt="" width="10" height="20" /></a> ：导线长度[m]</p>
<p>r：导线半径[m]</p>
<p><a title="点击看大图" href="http://mcukaifa.com/wp-content/uploads/auto_save_image/2010/06/153039YDy.gif" target="_blank"><img src="http://mcukaifa.com/wp-content/uploads/auto_save_image/2010/06/153039YDy.gif" alt="" width="21" height="25" /></a> ：真空导磁率， <a title="点击看大图" href="http://mcukaifa.com/wp-content/uploads/auto_save_image/2010/06/153039XGV.gif" target="_blank"><img src="http://mcukaifa.com/wp-content/uploads/auto_save_image/2010/06/153039XGV.gif" alt="" width="82" height="26" /></a> [H/m]</p>
]]></content:encoded>
			<wfw:commentRss>http://mcukaifa.com/%e6%9c%aa%e5%88%86%e7%b1%bb/189.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>对美国GODADDY空间的失望</title>
		<link>http://mcukaifa.com/news/zhatan/187.html</link>
		<comments>http://mcukaifa.com/news/zhatan/187.html#comments</comments>
		<pubDate>Tue, 13 Apr 2010 04:36:39 +0000</pubDate>
		<dc:creator>sowait</dc:creator>
				<category><![CDATA[杂谈]]></category>
		<category><![CDATA[godaddy]]></category>
		<category><![CDATA[域名]]></category>
		<category><![CDATA[空间]]></category>

		<guid isPermaLink="false">http://mcukaifa.com/?p=187</guid>
		<description><![CDATA[因为发现现在使用的服务器存在着网速慢,<a href="http://mcukaifa.com/tag/%e7%a9%ba%e9%97%b4" title="查看 空间 的全部文章" target="_blank">空间</a>小,<a href="http://mcukaifa.com/tag/%e5%9f%9f%e5%90%8d" title="查看 域名 的全部文章" target="_blank">域名</a>邦定受等问题.终于决定更换服务器了.
对国外服务器的选择,我个人的意见是建义不要在国内的代理那里去买,因为他们[......]<p class='read-more'><a href='http://mcukaifa.com/news/zhatan/187.html'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p>因为发现现在使用的服务器存在着网速慢,<span class='wp_keywordlink_affiliate'><a href="http://mcukaifa.com/tag/%e7%a9%ba%e9%97%b4" title="查看 空间 的全部文章" target="_blank">空间</a></span>小,<span class='wp_keywordlink_affiliate'><a href="http://mcukaifa.com/tag/%e5%9f%9f%e5%90%8d" title="查看 域名 的全部文章" target="_blank">域名</a></span>邦定受等问题.终于决定更换服务器了.</p>
<p>对国外服务器的选择,我个人的意见是建义不要在国内的代理那里去买,因为他们一般都是租的同一个服务器或是VPS等,并且在国内都有大批的用户了,这样会导至在访问主峰期带宽的不足.就像现在的MCUKAIFA.COM一样,平时网速还过的去,但到了晚上或是某些时候就开始抽风了.应该是所有的国外服务器都有这个问题,所以建义有备案的朋友不要购买国外服务器.哪怕国内服务器贵的要命.</p>
<p>关注了很久的美国空间,最后还是认为只有GODADDY的空间最划算,对GODADDY的服务也还算放心.于是就买了个GIRD的100GB空间.4.99us一个月,最低三个月起买.于是就用支付宝买下了三个月试用.</p>
<p>现在就来说说遇到的问题吧.</p>
<p>1:不支持伪静态(我用的WIN主机),在网上试用了很多方法,都失败了.</p>
<p>2:时不时地出现:(现在我的是经常)</p>
<p>Server Error</p>
<p>500 &#8211; Internal server error.</p>
<p>There is a problem with the resource you are looking for, and it cannot be displayed.</p>
<p>在网上查了下,很多人都遇到这个问题,并且最终都是无果的&#8230;我英文太烂,也没打算找客服了.反正都决定不再使用了</p>
<p>3:网速有时实在太慢.有时会超过30秒没有反应,然后又会是一个超时连接(是服务器发送的一个错误页,超时连接,而不是本机的404等).但有时速度超快,甚至比我国内的还快.实在想不通.</p>
<p>实际上还有一些其它的问题,就不一一地说了,比如配置后须要等上一段时间才生效..MYSQL服务器地址非LOCALHOST等.</p>
<p>如果你能忍受这些问题的话,特别是第二个,那么GD的空间还是可以用.</p>
]]></content:encoded>
			<wfw:commentRss>http://mcukaifa.com/news/zhatan/187.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>CAM350无法识别ALLEGRO 导出 drl钻孔文件解决方法</title>
		<link>http://mcukaifa.com/pcbdesign/allegro/185.html</link>
		<comments>http://mcukaifa.com/pcbdesign/allegro/185.html#comments</comments>
		<pubDate>Thu, 01 Apr 2010 10:54:35 +0000</pubDate>
		<dc:creator>sowait</dc:creator>
				<category><![CDATA[Cadence Allegro]]></category>
		<category><![CDATA[CAM350]]></category>
		<category><![CDATA[drl]]></category>
		<category><![CDATA[钻孔文件]]></category>

		<guid isPermaLink="false">http://mcukaifa.com/?p=185</guid>
		<description><![CDATA[刚学ALLEGRO不久,做的板子也不多.照着书上一步一步地做一直存在ALLEGRO导出的DRL文件无法在<a href="http://mcukaifa.com/tag/cam350" title="查看 CAM350 的全部文章" target="_blank">CAM350</a>中显示问题,而CAM2000确可以,当时并未[......]<p class='read-more'><a href='http://mcukaifa.com/pcbdesign/allegro/185.html'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p>刚学ALLEGRO不久,做的板子也不多.照着书上一步一步地做一直存在ALLEGRO导出的DRL文件无法在<span class='wp_keywordlink_affiliate'><a href="http://mcukaifa.com/tag/cam350" title="查看 CAM350 的全部文章" target="_blank">CAM350</a></span>中显示问题,而CAM2000确可以,当时并未在意这个问题.因为我发现在这些档案发给生产PCB的板厂他们并未提示我的档案有问题,做出的PCB也没啥问题,只是不能检测有没有问题而已,十分郁闷.</p>
<p>解决方法十分简单,单位设置问题而已.</p>
<p>ALLEGRO默认都是使用英制的,我们也最常用英制单位去制板,但是生成DRL档案时默认单位确是公制的……….导至了DRL档案在某些软件中无法识别..</p>
<p>ManufactureàNCàNC Drill 在Tool sequence 中选择你在Designàuser units中一至的单位即可.</p>
<p>另外据说选择auto tool select与 repeat codes 兼容性更好.</p>
]]></content:encoded>
			<wfw:commentRss>http://mcukaifa.com/pcbdesign/allegro/185.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>办理了移动3G包年</title>
		<link>http://mcukaifa.com/news/zhatan/173.html</link>
		<comments>http://mcukaifa.com/news/zhatan/173.html#comments</comments>
		<pubDate>Sat, 30 Jan 2010 16:00:56 +0000</pubDate>
		<dc:creator>sowait</dc:creator>
				<category><![CDATA[杂谈]]></category>
		<category><![CDATA[ET128]]></category>
		<category><![CDATA[移动3G]]></category>
		<category><![CDATA[锁定3G]]></category>

		<guid isPermaLink="false">http://mcukaifa.com/?p=173</guid>
		<description><![CDATA[由于现在是在公司宿舍住,不能上网,并且在公司上班也上网也是限制了的,QQ的什么都不能用,比较郁闷.前段时间去电脑城瞎逛时发现移动3G上网只要1000元一年,觉得[......]<p class='read-more'><a href='http://mcukaifa.com/news/zhatan/173.html'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p>由于现在是在公司宿舍住,不能上网,并且在公司上班也上网也是限制了的,QQ的什么都不能用,比较郁闷.前段时间去电脑城瞎逛时发现移动3G上网只要1000元一年,觉得自已是否有必要也去弄个玩玩.根JS谈了谈,结果那JS太不会做生意,把他的东西吹到天上去,其他人的都不能用的样子,这让我感觉他越靠不住.最后还是决定自已到移动营业厅去看看.结果营业厅为800元送400元并再送设备,然后我选的套餐为100元包每月100小时.一年刚好1200,这样刚好一年800元.由于是移动3G所以感觉还过的去,没有被大黑一笔.</p>
<p>回到公司宿舍马上就开工了,我使用的设备为华为<span class='wp_keywordlink_affiliate'><a href="http://mcukaifa.com/tag/et128" title="查看 ET128 的全部文章" target="_blank">ET128</a></span> 最大支持2.8M带宽.装完驱动,然后用G3随E行开始连接上网.拔号认证连接成功,久违的网页终于登上去了&#8230;&#8230;</p>
<p>因为我们大家的电脑都是在室内使用,而移动的3G信号可不是一般的拉圾,所以在我们这边室内只能使用EDGE网络,最大速度只有不到500K,实际下载的速度不到50K,最快我也只有看到过30k.如果把<img class="size-full wp-image-174 alignright" title="speed" src="http://mcukaifa.com/wp-content/uploads/2010/01/speed.gif" alt="" width="455" height="143" />笔记本拿到窗边或是室外,就能连接上移动3G信号.如果信号好的话最快能够有170K(实际下载速度)左右的网速,速度能够与2M的ADSL相比,但是如果是在线玩网游等延迟相当严重,几乎不能玩,不过也能够满足像我们这种只须要下载速度快的人了.在宿舍加了两个USB延长线将无线网卡延长到窗户,这样也可以在室内使用3G信号了,不过USB延长线可不能随便加多少的,加的太长就连不上网络,估记是线太长了,导至网卡供电不足,信号处理错误的原因.</p>
<p><a rel="attachment wp-att-175" href="http://mcukaifa.com/news/zhatan/173.html/attachment/speed2"><img class="alignright size-full wp-image-175" title="speed2" src="http://mcukaifa.com/wp-content/uploads/2010/01/speed2.gif" alt="" /></a></p>
<p>但是有个问题就是,当3G信号很弱的时候,无线网卡会自动切换到2G  EDGE网络,这让人很不爽.并且在现在版本中的G3随E行中没有将无线网卡锁定到3G频段的选项.(实际上是有的,被黑心的移动给隐藏了)</p>
<p>不过网络的力量是无穷的,test3g.com里的很多高手就自已破解了锁定3G信号的方法,也有破解G3随E行,打开网络设置选项的方法等等.</p>
<p>可以用下面的附件解开网络设置或是到http://www.test3g.com/thread-51695-1-1.html下载</p>
<p><a rel="attachment wp-att-176" href="http://mcukaifa.com/news/zhatan/173.html/attachment/set"><img class="alignnone size-full wp-image-176" title="set" src="http://mcukaifa.com/wp-content/uploads/2010/01/set.gif" alt="" /></a></p>
<p>实际上如果有3G信号,那么就锁定3G信号,哪怕它只有一格,那也会比3G的EDGE快出不少了.</p>
<p><a href="http://mcukaifa.com/wp-content/uploads/2010/01/set.zip">附件点击此下载</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mcukaifa.com/news/zhatan/173.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>搞定12864M LCD在流明LM3S系列ARM上的驱动</title>
		<link>http://mcukaifa.com/mcudesign/cortex/168.html</link>
		<comments>http://mcukaifa.com/mcudesign/cortex/168.html#comments</comments>
		<pubDate>Sat, 19 Dec 2009 11:52:24 +0000</pubDate>
		<dc:creator>sowait</dc:creator>
				<category><![CDATA[Cortex-M3]]></category>
		<category><![CDATA[12864]]></category>
		<category><![CDATA[LCD]]></category>

		<guid isPermaLink="false">http://mcukaifa.com/?p=168</guid>
		<description><![CDATA[话说现在的ARM都是玩的TFT  <a href="http://mcukaifa.com/tag/lcd" title="查看 LCD 的全部文章" target="_blank">LCD</a>了,但是仍有一些应用中还会用到在8051单片机常用的12864M显示屏了.晚上在公司加班无事可做,发现抽屉中居然有个<a href="http://mcukaifa.com/tag/12864" title="查看 12864 的全部文章" target="_blank">12[......]</a><p class='read-more'><a href='http://mcukaifa.com/mcudesign/cortex/168.html'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p>话说现在的ARM都是玩的TFT  <span class='wp_keywordlink_affiliate'><a href="http://mcukaifa.com/tag/lcd" title="查看 LCD 的全部文章" target="_blank">LCD</a></span>了,但是仍有一些应用中还会用到在8051单片机常用的12864M显示屏了.晚上在公司加班无事可做,发现抽屉中居然有个<span class='wp_keywordlink_affiliate'><a href="http://mcukaifa.com/tag/12864" title="查看 12864 的全部文章" target="_blank">12864</a></span>,刚好也正在学Cortex-M3所以就顺便把它移植到了我的LM3S1138的开发板上来了.程式是我之前在8051上用写过并稳定运行过的,所以整体移植几乎没遇到什么问题.程式也很简单,所以直接上源.系统是繁体的,所以注解也是繁体,没办法公司电脑都是繁体的.</p>
<p>51上面的驱动也可以找我要.留言就可以了</p>
<p>由于是使用流明的LM3S系列芯片,所以我也使用固件库,这样更方便一点.<br />
/*   CS == PE1<br />
SIO== PE2<br />
CLK== PE3   */</p>
<p>#define LCD_CS   GPIO_PIN_1<br />
#define LCD_SIO  GPIO_PIN_2<br />
#define LCD_CLK  GPIO_PIN_3<br />
#define com 0<br />
#define dat 1<br />
/*********************************************************************</p>
<p>相关IO的初始化</p>
<p>**********************************************************************/<br />
void softspi_init(void)<br />
{<br />
/*   CS == PE1<br />
SIO== PE2<br />
CLK== PE3   */</p>
<p>SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);<br />
GPIOPinTypeGPIOOutput(GPIO_PORTE_BASE,                  //设置两个LED为输出模式<br />
GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_1);</p>
<p>GPIOPinWrite(GPIO_PORTE_BASE,GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_1,0&#215;0);</p>
<p>}</p>
<p>/*********************************************************************</p>
<p>向12864写入一个字节</p>
<p>**********************************************************************/</p>
<p>void lcd_byte(INT8U byte)    //<span class='wp_keywordlink_affiliate'><a href="http://mcukaifa.com/tag/lcd" title="查看 LCD 的全部文章" target="_blank">LCD</a></span>寫字節指令<br />
{<br />
INT8U i;<br />
for(i=0;i&lt;8;i++)<br />
{<br />
GPIOPinWrite(GPIO_PORTE_BASE,LCD_CLK,0&#215;0);    //     lcd_clk=0;<br />
if(byte&amp;0&#215;80)<br />
GPIOPinWrite(GPIO_PORTE_BASE,LCD_SIO,0xFF);<br />
else                                                   // lcd_rw=CY;<br />
GPIOPinWrite(GPIO_PORTE_BASE,LCD_SIO,0&#215;0);<br />
byte&lt;&lt;=1;</p>
<p>GPIOPinWrite(GPIO_PORTE_BASE,LCD_CLK,0xff);    //     lcd_clk=1;<br />
}<br />
}</p>
<p>/*************************************************************************lCD寫入數據子程式*****************************/<br />
void lcd_write(INT8U dat_com,INT8U byt)    //lCD寫入數據子程式<br />
{<br />
INT8U temp;<br />
if(dat_com==0)     //如果為0,則表示寫入指令<br />
temp=0xf8;     //11111,RS(0),RW(0),0<br />
else            //為1,寫入數據<br />
temp=0xfa;     //11111,RS(1),RW(0),0</p>
<p>GPIOPinWrite(GPIO_PORTE_BASE,LCD_CS,0xff);    //  lcd_cs=1;<br />
lcd_busy();            //檢測lCD是否為忙狀態<br />
lcd_byte(temp);        //將首位寫入lCD<br />
lcd_byte(byt&amp;0xf0); //寫入高四位<br />
lcd_byte(byt&lt;&lt;4);   //寫入低四位<br />
GPIOPinWrite(GPIO_PORTE_BASE,LCD_CS,0&#215;0);    //  lcd_cs=0;<br />
}</p>
<p>/**********************************************************************從lCD中讀取一個數據**************************/<br />
INT8U lcd_read(void)    //從lCD中讀取一個數據<br />
{<br />
INT8U i,temp1,temp2;<br />
temp1 = 0;<br />
temp2 = 0;<br />
for(i=0;i&lt;8;i++)<br />
{<br />
temp1=temp1&lt;&lt;1;<br />
GPIOPinWrite(GPIO_PORTE_BASE,LCD_CLK,0&#215;0);    //lcd_clk = 0;<br />
GPIOPinWrite(GPIO_PORTE_BASE,LCD_CLK,0xFF);    //lcd_clk = 1;<br />
GPIOPinWrite(GPIO_PORTE_BASE,LCD_CLK,0&#215;0);    //lcd_clk = 0;<br />
if(GPIOPinRead(GPIO_PORTE_BASE,LCD_SIO))    //  讀取IO狀態<br />
temp1++;<br />
}<br />
for(i=0;i&lt;8;i++)<br />
{<br />
temp2=temp2&lt;&lt;1;<br />
GPIOPinWrite(GPIO_PORTE_BASE,LCD_CLK,0&#215;0);    //lcd_clk = 0;<br />
GPIOPinWrite(GPIO_PORTE_BASE,LCD_CLK,0xFF);    //lcd_clk = 1;<br />
GPIOPinWrite(GPIO_PORTE_BASE,LCD_CLK,0&#215;0);    //lcd_clk = 0;<br />
if(GPIOPinRead(GPIO_PORTE_BASE,LCD_SIO))    //  讀取IO狀態<br />
temp2++;<br />
}<br />
return ((0xf0&amp;temp1)+(0x0f&amp;temp2));<br />
}</p>
<p>/***********************************************************************等待lCD空閑狀態**************************/<br />
void lcd_busy(void)    //等待lCD空閑狀態</p>
<p>{<br />
do<br />
lcd_byte(0xfc);      //11111,RW(1),RS(0),0<br />
while(0&#215;80&amp;lcd_read());<br />
}</p>
<p>/**********************************************************************lCD初始化******************************/<br />
void lcd_init(void)    //lCD初始化<br />
{<br />
lcd_write(com,0&#215;30); //基本指令功能.<br />
lcd_write(com,0x0c); //打開顯示.關閉光標,關閉反白<br />
lcd_write(com,0&#215;01); //清屏指令.<br />
lcd_write(com,0&#215;06); //AC自動加一<br />
}<br />
/*********************************************************************LCD顯示漢字子程式********************/<br />
void lcdshow(INT8U dz,INT8U nr[],INT8U sl)<br />
{<br />
unsigned char i=0;<br />
unsigned char one;<br />
unsigned char two;<br />
lcd_write(com,dz);<br />
for(;sl&gt;0;sl&#8211;)<br />
{<br />
one=nr[i];<br />
lcd_write(dat,one);<br />
i+=1;<br />
two=nr[i];<br />
if(one&lt;0&#215;80)<br />
{<br />
if(two&lt;0&#215;80)<br />
{<br />
lcd_write(dat,two);<br />
i+=1;<br />
continue;<br />
}<br />
;<br />
lcd_write(dat,0&#215;02);<br />
continue;<br />
}</p>
<p>lcd_write(dat,two);<br />
i+=1;<br />
}<br />
}</p>
<p>在实际应用中只须要先调用IO初始化,然后LCD初始化后就可以直接使用了.比如:</p>
<p>softspi_init();    //  初始化IO,只须要上电运行一次</p>
<p>lcd_init();          //  LCD初始化  ,让LCD处于白屏状态.</p>
<p>//然后直接用lcdshow函数显示汉字..</p>
<p>INT8U showfen[]={&#8220;单片机开发网&#8221;};     //定义一个要显示的数据串</p>
<p>lcdshow(0&#215;80,showfen,5);                //调用lcdshow显示那个数据串,第一个参数是显示的位置,第二个参数是数据串的起始地址,第三个是显示的数量.</p>
<p>怎么样,这个函数够方便吧..</p>
]]></content:encoded>
			<wfw:commentRss>http://mcukaifa.com/mcudesign/cortex/168.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>UCOS II消息郵箱的使用</title>
		<link>http://mcukaifa.com/mcudesign/ucos-mcudesign/166.html</link>
		<comments>http://mcukaifa.com/mcudesign/ucos-mcudesign/166.html#comments</comments>
		<pubDate>Tue, 15 Dec 2009 10:45:00 +0000</pubDate>
		<dc:creator>sowait</dc:creator>
				<category><![CDATA[UCOS]]></category>
		<category><![CDATA[OSMboxCreate]]></category>
		<category><![CDATA[OSMboxPend]]></category>
		<category><![CDATA[OSMboxPost]]></category>
		<category><![CDATA[消息郵箱]]></category>

		<guid isPermaLink="false">http://mcukaifa.com/?p=166</guid>
		<description><![CDATA[具體使用方法與信號量的方式大同小易,<a href="http://mcukaifa.com/mcudesign/ucos-mcudesign/163.html" target="_blank">點擊這里查看信號量的使用</a>.
首先建立一個OS_EVENT結構體的指針:
OS_EVENT *MSBOX;
然后初始化此結構為[......]<p class='read-more'><a href='http://mcukaifa.com/mcudesign/ucos-mcudesign/166.html'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p>具體使用方法與信號量的方式大同小易,<a href="http://mcukaifa.com/mcudesign/ucos-mcudesign/163.html" target="_blank">點擊這里查看信號量的使用</a>.</p>
<p>首先建立一個OS_EVENT結構體的指針:</p>
<p>OS_EVENT *MSBOX;</p>
<p>然后初始化此結構為<span class='wp_keywordlink_affiliate'><a href="http://mcukaifa.com/tag/%e6%b6%88%e6%81%af%e9%83%b5%e7%ae%b1" title="查看 消息郵箱 的全部文章" target="_blank">消息郵箱</a></span>的結構:</p>
<p>MSBOX=<span class='wp_keywordlink_affiliate'><a href="http://mcukaifa.com/tag/osmboxcreate" title="查看 OSMboxCreate 的全部文章" target="_blank">OSMboxCreate</a></span>(0);</p>
<p>然后就可以隨時使用此郵箱了.比較常用的有等待<span class='wp_keywordlink_affiliate'><a href="http://mcukaifa.com/tag/%e6%b6%88%e6%81%af%e9%83%b5%e7%ae%b1" title="查看 消息郵箱 的全部文章" target="_blank">消息郵箱</a></span>與發送消息郵箱:</p>
<p>具體使用方式見以下程式.</p>
<p>#include &#8220;stm32f10x_lib.h&#8221;<br />
#include &#8220;includes.h&#8221;</p>
<p>OS_STK os_sysinit_stk[60];<br />
OS_STK os_ledshow_stk[60];<br />
OS_STK os_ideluser_stk[60];<br />
OS_STK os_uart_stk[60];</p>
<p>OS_EVENT *UARTBOX;        //為串口數據建立一個事件</p>
<p>void os_sysinit_task(void *pdata)<br />
{<br />
sysinit();<br />
initGPIOA();//</p>
<p>UARTBOX=<span class='wp_keywordlink_affiliate'><a href="http://mcukaifa.com/tag/osmboxcreate" title="查看 OSMboxCreate 的全部文章" target="_blank">OSMboxCreate</a></span>(0);        //初始化串口的信箱,值為空</p>
<p>OSTaskSuspend(2);        //掛起自已,暫時不讓它運行了<br />
while(1)<br />
{<br />
}<br />
}</p>
<p>void os_ledshow_task(void *pdata)<br />
{<br />
while(1)<br />
{<br />
OSTimeDlyHMSM(0,0,0,20);<br />
GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_RESET);<br />
OSTimeDlyHMSM(0,0,1,0);<br />
GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_SET);<br />
}<br />
}</p>
<p>void os_ideluser_task(void *pdata)<br />
{<br />
INT8U date;<br />
while(1)<br />
{<br />
OSTimeDlyHMSM(0,0,1,0);<br />
date=&#8217;S';<br />
<span class='wp_keywordlink_affiliate'><a href="http://mcukaifa.com/tag/osmboxpost" title="查看 OSMboxPost 的全部文章" target="_blank">OSMboxPost</a></span>(UARTBOX,&amp;date);</p>
<p>OSTimeDlyHMSM(0,0,2,0);<br />
date=&#8217;B';<br />
OSMboxPost(UARTBOX,&amp;date);           //發送一個消息,注意待發送的數據是一個指針形式的就可以了.無值的指針形式可以指向任何類型數據<br />
}<br />
}</p>
<p>void os_uart_test(void *pdata)<br />
{<br />
INT8U senddata,ERROR;<br />
INT8U *ss;<br />
while(1)<br />
{<br />
ss=<span class='wp_keywordlink_affiliate'><a href="http://mcukaifa.com/tag/osmboxpend" title="查看 OSMboxPend 的全部文章" target="_blank">OSMboxPend</a></span>(UARTBOX,0,&amp;ERROR);                            //等待消息的到來.并將此消息給SS這個指針<br />
senddata=*ss;                                                                                 //再將此指針指向的值傳遞給SENDDATA<br />
uart_txb(senddata);<br />
}<br />
}</p>
<p>void os_creat_all(void)<br />
{</p>
<p>OSTaskCreate(os_sysinit_task,(void *)0,&amp;os_sysinit_stk[59],2);             //建立一個任務<br />
OSTaskCreate(os_ledshow_task,(void *)0,&amp;os_ledshow_stk[59],3);             //再建立一個任務<br />
OSTaskCreate(os_ideluser_task,(void *)0,&amp;os_ideluser_stk[59],4);<br />
OSTaskCreate(os_uart_test,(void *)0,&amp;os_uart_stk[59],5);</p>
<p>}</p>
]]></content:encoded>
			<wfw:commentRss>http://mcukaifa.com/mcudesign/ucos-mcudesign/166.html/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>ucos學習筆記之信號量的使用</title>
		<link>http://mcukaifa.com/mcudesign/ucos-mcudesign/163.html</link>
		<comments>http://mcukaifa.com/mcudesign/ucos-mcudesign/163.html#comments</comments>
		<pubDate>Tue, 01 Dec 2009 10:18:04 +0000</pubDate>
		<dc:creator>sowait</dc:creator>
				<category><![CDATA[UCOS]]></category>
		<category><![CDATA[UC/OS]]></category>
		<category><![CDATA[信號量]]></category>

		<guid isPermaLink="false">http://mcukaifa.com/?p=163</guid>
		<description><![CDATA[臺資黑工廠里寫的,字體為繁體,我也懶的轉換了,反正看的人也不多..
個人理解<a href="http://mcukaifa.com/tag/%e4%bf%a1%e8%99%9f%e9%87%8f" title="查看 信號量 的全部文章" target="_blank">信號量</a>的作用:任務之間同步的標識,或是對共享資源操作的一個鎖匙(MS有更強大的互斥型[......]<p class='read-more'><a href='http://mcukaifa.com/mcudesign/ucos-mcudesign/163.html'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p>臺資黑工廠里寫的,字體為繁體,我也懶的轉換了,反正看的人也不多..</p>
<p>個人理解<span class='wp_keywordlink_affiliate'><a href="http://mcukaifa.com/tag/%e4%bf%a1%e8%99%9f%e9%87%8f" title="查看 信號量 的全部文章" target="_blank">信號量</a></span>的作用:任務之間同步的標識,或是對共享資源操作的一個鎖匙(MS有更強大的互斥型的<span class='wp_keywordlink_affiliate'><a href="http://mcukaifa.com/tag/%e4%bf%a1%e8%99%9f%e9%87%8f" title="查看 信號量 的全部文章" target="_blank">信號量</a></span>).總之不管那么多,一個任務可以等待一個信號量.任務或是中斷可以發送信號量,等待信號量的任務在收到信號量的時候就繼續運行.可以多個任務同時等待一個信號量,但只有優先級最高的任務得到信號量并執行.中斷不可使用信號量.<br />
簡單的信號量應用<br />
一:先在OS_CFG.H中把OS_SEM打頭的幾個全部定義為1;OS_MAX_EVENTS為所有的事件數量(包括消息隊列等),定義為多少看情況,我設定為20(每加一個就多用掉了近100字節的RAM).<br />
二:定義一個OS_EVENT弄的指針  方法: OS_EVENT *SBSB;<br />
三:在任務中創建一個信號量    方法: SBSB=OSSemCreate(5);  這樣SBSB就是一個指向了新建的一個信號量.后面那個5表示初始值,表示現在有5個信號量</p>
<p>四:接下來就可以在任務中使用信號量了(中斷中只可以發送信號量)<br />
   等待信號量方法:OSSemPend(SBSB,0,&amp;ERROR);   //等待SBSB這個信號量  后面的一個參數為超時,0表示永不超時,時間單位為OS的TIMESTICK,第三個參數為錯誤代碼<br />
   發送信號量方法:很簡單 OSSemPost(SBSB);就收工了</p>
<p>下面是我寫的最簡單應用,STM32用的,放到這里,以免以后忘了.</p>
<p>#include &#8220;stm32f10x_lib.h&#8221;<br />
#include &#8220;includes.h&#8221;</p>
<p> </p>
<p>OS_STK os_sysinit_stk[60];<br />
OS_STK os_ledshow_stk[60];<br />
OS_STK os_ideluser_stk[60];</p>
<p> <br />
void os_sysinit_task(void *pdata)<br />
{  <br />
 INT8U ERROR;<br />
 sysinit();<br />
 initGPIOA();<br />
 while(1)<br />
  {<br />
  OSSemPend(SEM01,0,&amp;ERROR);<br />
  OSTimeDly(40);<br />
  GPIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_RESET);<br />
  OSTimeDly(20);<br />
  GPIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_SET);<br />
  }<br />
}</p>
<p>void os_ledshow_task(void *pdata)<br />
{<br />
 while(1)<br />
  {<br />
   <br />
   <br />
    OSTimeDlyHMSM(0,0,0,20);<br />
   <br />
    GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_RESET);<br />
    //  USART_SendData(USART1,0&#215;44);<br />
    OSTimeDlyHMSM(0,0,1,0);<br />
       GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_SET);<br />
  }<br />
}</p>
<p>void os_ideluser_task(void *pdata)<br />
{<br />
 while(1)<br />
  {<br />
  OSTimeDlyHMSM(0,0,4,0);<br />
  OSSemPost(SEM01);OSSemPost(SEM01);OSSemPost(SEM01);</p>
<p>  }<br />
}</p>
<p> </p>
<p>void os_creat_all(void)<br />
{<br />
 <br />
 OSTaskCreate(os_sysinit_task,(void *)0,&amp;os_sysinit_stk[59],2);    //建立一個任務<br />
 OSTaskCreate(os_ledshow_task,(void *)0,&amp;os_ledshow_stk[59],3);    //再建立一個任務<br />
 OSTaskCreate(os_ideluser_task,(void *)0,&amp;os_ideluser_stk[59],4);<br />
 <br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://mcukaifa.com/mcudesign/ucos-mcudesign/163.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>STM32最簡單應用之GPIO點燈</title>
		<link>http://mcukaifa.com/mcudesign/cortex/160.html</link>
		<comments>http://mcukaifa.com/mcudesign/cortex/160.html#comments</comments>
		<pubDate>Sat, 28 Nov 2009 09:42:06 +0000</pubDate>
		<dc:creator>sowait</dc:creator>
				<category><![CDATA[Cortex-M3]]></category>
		<category><![CDATA[GPIO]]></category>
		<category><![CDATA[STM32]]></category>

		<guid isPermaLink="false">http://mcukaifa.com/?p=160</guid>
		<description><![CDATA[老板現在不在,抽空寫一篇文章:<a href="http://mcukaifa.com/tag/stm32" title="查看 STM32 的全部文章" target="_blank">STM32</a>的初學者可以看看,老鳥請自覺飄過-_-!.
由于公司為台灣黑工廠,所以所有電腦都是繁體系統,所以所有文字也為繁體的,不過[......]<p class='read-more'><a href='http://mcukaifa.com/mcudesign/cortex/160.html'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p>老板現在不在,抽空寫一篇文章:<span class='wp_keywordlink_affiliate'><a href="http://mcukaifa.com/tag/stm32" title="查看 STM32 的全部文章" target="_blank">STM32</a></span>的初學者可以看看,老鳥請自覺飄過-_-!.</p>
<p>由于公司為台灣黑工廠,所以所有電腦都是繁體系統,所以所有文字也為繁體的,不過應該不影響閱讀.</p>
<p>     剛購入<span class='wp_keywordlink_affiliate'><a href="http://mcukaifa.com/tag/stm32" title="查看 STM32 的全部文章" target="_blank">STM32</a></span>時,對它的資料看的有點頭痛,不過在整理了一下之后就大至清析明了,特別是它的固件庫使用風格比較另類,使用了大量的結構體,然后用整個結構作為固件庫函數的參數,這樣雖然可以減少函數參數的傳遞,但對于習慣了NPX與TI的固件庫來說這樣有點不習慣.</p>
<p>    廢話這么多,現在就上我的STM32第一個程式,點亮一個LED!   須要注意的是須要使用固件庫.</p>
<p>  GPIO_InitTypeDef GPIOASET;      //定義一個GPIO_InitTypeDef類型的結構<br />
 GPIO_DeInit(GPIOA);                       //GPIOA恢復默認值<br />
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);   //先使能<span class='wp_keywordlink_affiliate'><a href="http://mcukaifa.com/tag/gpio" title="查看 GPIO 的全部文章" target="_blank">GPIO</a></span> A的時鐘  (幾乎所有的CORTEX-M3核的外設都須要先使能時鐘)<br />
 GPIOASET.GPIO_Pin=(GPIO_Pin_0|GPIO_Pin_1);                               /*選擇到GPIO_PIN 0還有1 */<br />
 GPIOASET.GPIO_Speed=GPIO_Speed_50MHz;                                    //GPIO的速度<br />
 GPIOASET.GPIO_Mode=GPIO_Mode_Out_PP;                                    /*    輸入輸出類型:當然是輸出型的            */<br />
 GPIO_Init(GPIOA,&amp;GPIOASET);                                                                  //然后設置GPIO,它是根據GPIOASET中各個成員的值來進行設定的</p>
<p>接下來我們就可以直接使用GPIO了,如果為了效率可以使用匯編或是直接寫寄存器的方法操作,如果無所謂效率就使用固件庫;</p>
<p>GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_SET);       //置位相應的LED</p>
<p>GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_RESET);   //清零相應的LED    這很容易理解.</p>
]]></content:encoded>
			<wfw:commentRss>http://mcukaifa.com/mcudesign/cortex/160.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>uCOS-II 常用函数参考手册[轉]</title>
		<link>http://mcukaifa.com/mcudesign/157.html</link>
		<comments>http://mcukaifa.com/mcudesign/157.html#comments</comments>
		<pubDate>Sat, 28 Nov 2009 05:41:20 +0000</pubDate>
		<dc:creator>sowait</dc:creator>
				<category><![CDATA[MCU开发]]></category>
		<category><![CDATA[UC/OS]]></category>
		<category><![CDATA[常用函数]]></category>

		<guid isPermaLink="false">http://mcukaifa.com/?p=157</guid>
		<description><![CDATA[<strong>任务管理</strong>
1 OSTaskCreate()
        建立一个新任务。任务的建立可以在多任务环境启动之前，也可以在正在运行的任务中建立。中断处理程序中不能[......]<p class='read-more'><a href='http://mcukaifa.com/mcudesign/157.html'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<div>
<p><span style="font-size: small;"><strong>任务管理</strong><br />
<span style="color: #ff0000;">1 OSTaskCreate()<br />
</span>        建立一个新任务。任务的建立可以在多任务环境启动之前，也可以在正在运行的任务中建立。中断处理程序中不能建立任务。一个任务可以为无限循环的结构。<br />
函数原型：INT8U OSTaskCreate(void (*task)(void *pd), void *pdata, OS_STK *ptos, INT8U prio);<br />
参数说明：task 是指向任务代码首地址的指针。<br />
     pdata 指向一个数据结构，该结构用来在建立任务时向任务传递参数。<br />
     ptos is a pointer to the task&#8217;s top of stack. If the configuration constant OS_STK_GROWTH is set to 1, the stack is assumed to grow downward (i.e. from high memory to low memory). &#8216;pstk&#8217; will thus point to the highest (valid) memory location of the stack. If OS_STK_GROWTH is set to 0, &#8216;pstk&#8217; will point to the lowest memory location of the stack and the stack will grow with increasing memory locations.<br />
      prio is the task&#8217;s priority. A unique priority MUST be assigned to each task and the lower the number, the higher the priority.<br />
返回值：<br />
OSTaskCreate() 的返回值为下述之一：<br />
* OS_NO_ERR：函数调用成功。<br />
* OS_PRIO_EXIST：具有该优先级的任务已经存在。<br />
* OS_PRIO_INVALID：参数指定的优先级大于OS_LOWEST_PRIO。<br />
* OS_NO_MORE_TCB：系统中没有OS_TCB可以分配给任务了。</span></p>
<p><span style="font-size: small;"><span style="color: #ff0000;">2 OSTaskSuspend()</span><br />
        无条件挂起一个任务。调用此函数的任务也可以传递参数 OS_PRIO_SELF，挂起调用任务本身。当前任务挂起后，只有其他任务才能唤醒被挂起的任务。任务挂起后，系统会重新进行任务调度，运行下一个优先级最高的就绪任务。唤醒挂起任务需要调用函数OSTaskResume()。<br />
        任务的挂起是可以叠加到其他操作上的。例如，任务被挂起时正在进行延时操作，那么任务的唤醒就需要两个条件：延时的结束以及其他任务的唤醒操作。又如，任务被挂起时正在等待信号量，当任务从信号量的等待对列中清除后也不能立即运行，而必须等到被唤醒后。<br />
函数原型：INT8U OSTaskSuspend(INT8U prio);<br />
参数说明：prio为指定要获取挂起的任务优先级，也可以指定参数 OS_PRIO_SELF，挂起任务本身。此时，下一个优先级最高的就绪任务将运行。<br />
返回值：<br />
OSTaskSuspend() 的返回值为下述之一：<br />
* OS_NO_ERR：函数调用成功。<br />
* OS_TASK_SUSPEND_IDLE：试图挂起μC/OS-II中的空闲任务（Idle task）。此为非法操作。<br />
* OS_PRIO_INVALID：参数指定的优先级大于 OS_LOWEST_PRIO 或没有设定 OS_PRIO_SELF 的值。<br />
* OS_TASK_SUSPEND_PRIO：要挂起的任务不存在。</span></div>
<div>
<p><span style="font-size: small;"><span style="color: #ff0000;">3 OSTaskResume()<br />
</span>        唤醒一个用 OSTaskSuspend() 函数挂起的任务。OSTaskResume() 也是唯一能“解挂”挂起任务的函数。<br />
函数原型：INT8U OSTaskResume(INT8U prio);<br />
参数说明：prio指定要唤醒任务的优先级。<br />
返回值：<br />
OSTaskResume() 的返回值为下述之一：<br />
* OS_NO_ERR：函数调用成功。<br />
* OS_TASK_RESUME_PRIO：要唤醒的任务不存在。<br />
* OS_TASK_NOT_SUSPENDED：要唤醒的任务不在挂起状态。<br />
* OS_PRIO_INVALID：参数指定的优先级大于或等于OS_LOWEST_PRIO。</p>
<p><strong>信号量<br />
</strong><span style="color: #ff0000;">1 OSSemCreate()<br />
</span>          该函数建立并初始化一个信号量，信号量的作用如下：<br />
    * 允许一个任务和其他任务或者中断同步<br />
    * 取得设备的使用权<br />
    * 标志事件的发生<br />
函数原型：OS_EVENT *OSSemCreate(INT16U value);<br />
参数说明：value 参数是所建立的信号量的初始值，可以取0到65535之间的任何值。<br />
返回值：<br />
OSSemCreate() 函数返回指向分配给所建立的信号量的控制块的指针。如果没有可用的控制块，OSSemCreate() 函数返回空指针。</p>
<p><span style="color: #ff0000;">2 OSSemPend()</span><br />
        该函数用于任务试图取得设备的使用权、任务需要和其他任务或中断同步、任务需要等待特定事件的发生的场合。如果任务调用OSSemPend() 函数时，信号量的值大于零，OSSemPend() 函数递减该值并返回该值。如果调用时信号量值等于零，OSSemPend() 函数将任务加入该信号量的等待队列。OSSemPend() 函数挂起当前任务直到其他的任务或中断设置信号量或超出等待的预期时间。如果在预期的时钟节拍内信号量被设置，μC/OS-Ⅱ默认让最高优先级的任务取得信号量并回到就绪状态。一个被OSTaskSuspend() 函数挂起的任务也可以接受信号量，但这个任务将一直保持挂起状态直到通过调用OSTaskResume() 函数恢复该任务的运行。<br />
函数原型：void OSSemPend ( OS_EVNNT *pevent, INT16U timeout, int8u *err );<br />
参数说明：pevent 是指向信号量的指针。该指针的值在建立该信号量时可以得到。（参考OSSemCreate() 函数）。<br />
         timeout 允许一个任务在经过了指定数目的时钟节拍后还没有得到需要的信号量时恢复就绪状态。如果该值为零表示任务将持续地等待信号量，最大的等待时间为65535个时钟节拍。这个时间长度并不是非常严格的，可能存在一个时钟节拍的误差。<br />
         err 是指向包含错误码的变量的指针，返回的错误码可能为下述几种：<br />
            * OS_NO_ERR ：信号量不为零。<br />
            * OS_TIMEOUT ：信号量没有在指定数目的时钟周期内被设置。<br />
            * OS_ERR_PEND_ISR ：从中断调用该函数。虽然规定了不允许从中断调用该函数，但μC/OS-Ⅱ仍然包含了检测这种情况的功能。<br />
            * OS_ERR_EVENT_TYPE ：pevent 不是指向信号量的指针。<br />
返回值：无</p>
<p><span style="color: #ff0000;">3 OSSemPost()</span><br />
        该函数用于设置指定的信号量。如果指定的信号量是零或大于零，OSSemPost() 函数递增该信号量的值并返回。如果有任何任务在等待该信号量，则最高优先级的任务将得到信号量并进入就绪状态。任务调度函数将进行任务调度，决定当前运行的任务是否仍然为最高优先级的就绪任务。<br />
函数原型：INT8U OSSemPost（OS_EVENT *pevent）;<br />
参数说明：pevent 是指向信号量的指针。该指针的值在建立该信号量时可以得到。（参考OSSemCreate() 函数）。<br />
返回值：<br />
OSSemPost() 函数的返回值为下述之一：<br />
* OS_NO_ERR ：信号量被成功地设置<br />
* OS_SEM_OVF ：信号量的值溢出<br />
* OS_ERR_EVENT_TYPE ：pevent 不是指向信号量的指针</p>
<p><strong>时间</strong><br />
<span style="color: #ff0000;">1 OSTimeDly()</span><br />
        该函数用于将一个任务延时若干个时钟节拍。如果延时时间大于0，系统将立即进行任务调度。延时时间的长度可从0到65535个时钟节拍。延时时间0表示不进行延时，函数将立即返回调用者。延时的具体时间依赖于系统每秒钟有多少个时钟节拍（由文件OS_CFG.H中的OS_TICKS_PER_SEC宏来设定）。<br />
函数原型：void OSTimeDly (INT16U ticks);<br />
参数说明：ticks 为要延时的时钟节拍数。<br />
返回值：无</p>
<p><span style="color: #ff0000;">2 OSTimeDlyHMSM()</span><br />
        该函数用于将一个任务延时若干时间。延时的单位是小时、分、秒、毫秒。调用 OSTimeDlyHMSM() 后，如果延时时间不为0，系统将立即进行任务调度。<br />
函数原型: INT8U OSTimeDlyHMSM (INT8U hours，INT8U minutes，INT8U seconds，INT16U milli);<br />
参数说明：hours 为延时小时数，范围从0-255。<br />
         minutes 为延时分钟数，范围从0-59。<br />
         seconds 为延时秒数，范围从0-59<br />
         milli 为延时毫秒数，范围从0-999。<br />
        需要说明的是，操作系统在处理延时操作时都是以时钟节拍为单位的，实际的延时时间是时钟节拍的整数倍。如果系统时钟节拍的间隔是10ms，而设定延时为5ms的话，则不会产生延时操作；而如果设定延时为15ms，则实际的延时是两个时钟节拍，也就是20ms。<br />
返回值：<br />
OSTimeDlyHMSM() 的返回值为下述之一：<br />
* OS_NO_ERR：函数调用成功。<br />
* OS_TIME_INVALID_MINUTES：参数错误，分钟数大于59。<br />
* OS_TIME_INVALID_SECONDS：参数错误，秒数大于59。<br />
* OS_TIME_INVALID_MILLI：参数错误，毫秒数大于999。<br />
* OS_TIME_ZERO_DLY：四个参数全为0。</p>
<p></span><span style="font-size: small;"><strong>内存管理</strong><br />
<span style="color: #ff0000;">1 OSMemCreate()</span><br />
        该函数建立并初始化一个用于动态内存分配的区域，该内存区域包含指定数目的、大小确定的内存块。应用可以动态申请这些内存块并在用完后将其释放回这个内存区域。该函数的返回值就是指向这个内存区域控制块的指针，并作为OSMemGet()，OSMemPut()，OSMemQuery() 等相关调用的参数。<br />
函数原型：OS_MEM *OSMemCreate( void *addr, INT32U nblks, INT32U blksize, INT8U *err );<br />
参数说明：addr 建立的内存区域的起始地址。可以使用静态数组或在系统初始化时使用 malloc() 函数来分配这个区域的空间。<br />
         nblks 内存块的数目。每一个内存区域最少需要定义两个内存块。<br />
         blksize 每个内存块的大小，最小应该能够容纳一个指针变量。<br />
         err 是指向包含错误码的变量的指针。Err可能是如下几种情况：<br />
           * OS_NO_ERR ：成功建立内存区域。<br />
           * OS_MEM_INVALID_ADDR ：非法地址，即地址为空指针。<br />
           * OS_MEM_INVALID_PART ：没有空闲的内存区域。<br />
           * OS_MEM_INVALID_BLKS ：没有为内存区域建立至少两个内存块。<br />
           * OS_MEM_INVALID_SIZE ：内存块大小不足以容纳一个指针变量。<br />
返回值：<br />
OSMemCreate() 函数返回指向所创建的内存区域控制块的指针。如果创建失败，函数返回空指针。</p>
<p><span style="color: #ff0000;">2 OSMemGet()</span><br />
        该函数用于从内存区域分配一个内存块。用户程序必须知道所建立的内存块的大小，并必须在使用完内存块后释放它。可以多次调用 OSMemGet() 函数。它的返回值就是指向所分配内存块的指针，并作为 OSMemPut() 函数的参数。<br />
函数原型：void *OSMemGet(OS_MEM *pmem, INT8U *err);<br />
参数说明：pmem 是指向内存区域控制块的指针，可以从 OSMemCreate() 函数的返回值中得到。<br />
         err 是指向包含错误码的变量的指针。Err可能是如下情况：<br />
            * OS_NO_ERR ：成功得到一个内存块。<br />
            * OS_MEM_NO_FREE_BLKS ：内存区域中已经没有足够的内存块。<br />
返回值：<br />
OSMemGet() 函数返回指向所分配内存块的指针。如果没有可分配的内存块，OSMemGet() 函数返回空指针。</span></p>
<p><span style="font-size: small;"><span style="color: #ff0000;">3 OSMemPut()</span><br />
        该函数用于释放一个内存块，内存块必须释放回它原先所在的内存区域，否则会造成系统错误。<br />
函数原型：INT8U OSMemPut (OS_MEM *pmem, void *pblk);<br />
参数说明：pmem 是指向内存区域控制块的指针，可以从 OSMemCreate() 函数的返回值中得到。<br />
         pblk 是指向将被释放的内存块的指针。<br />
返回值：<br />
OSMemPut() 函数的返回值为下述之一：<br />
* OS_NO_ERR ：成功释放内存块<br />
* OS_MEM_FULL ：内存区域已满，不能再接受更多释放的内存块。这种情况说明用户程序出现了错误，释放了多于用 OSMemGet() 函数得到的内存块。</p>
<p><span style="color: #ff0000;">4 OSMemQuery()<br />
</span>        该函数用于得到内存区域的信息。<br />
函数原型：INT8U OSMemQuery(OS_MEM *pmem, OS_MEM_DATA *pdata);<br />
参数说明：pmem 是指向内存区域控制块的指针，可以从 OSMemCreate() 函数的返回值中得到。<br />
         pdata 是一个指向 OS_MEM_DATA 数据结构的指针，该数据结构包含了以下的域：<br />
void     OSAddr;           /* 指向内存区域起始地址的指针 */<br />
void     OSFreeList;       /* 指向空闲内存块列表起始地址的指针 */<br />
INT32U   OSBlkSize;        /* 每个内存块的大小 */<br />
INT32U   OSNBlks;          /* 该内存区域中的内存块总数 */<br />
INT32U   OSNFree;          /* 空闲的内存块数目 */<br />
INT32U   OSNUsed;          /* 已使用的内存块数目 */</p>
<p></span><span style="font-size: small;"><strong>消息队列<br />
</strong><span style="color: #ff0000;">1 OSQCreate()<br />
</span>       该函数用于建立一个消息队列。任务或中断可以通过消息队列向一个或多个任务发送消息。消息的含义是和具体的应用密切相关的。<br />
函数原型：OS_EVENT *OSQCreate (void **start, INT8U size);<br />
参数说明：start 是消息内存区的首地址，消息内存区是一个指针数组。<br />
         size 是消息内存区的大小。<br />
返回值：<br />
OSQCreate() 函数返回一个指向消息队列控制块的指针。如果没有空闲的控制块，OSQCreate() 函数返回空指针。</p>
<p><span style="color: #ff0000;">2 OSQPend()</span><br />
       该函数用于任务等待消息。消息通过中断或任务发送给需要的任务。消息是一个指针变量，在不同的应用中消息的具体含义不同。如果调用 OSQPend() 函数时队列中已经存在消息，那么该消息被返回给 OSQPend() 函数的调用者，该消息同时从队列中清除。如果调用 OSQPend() 函数时队列中没有消息，OSQPend() 函数挂起调用任务直到得到消息或超出定义的超时时间。如果同时有多个任务等待同一个消息，μC/OS-Ⅱ默认最高优先级的任务取得消息。一个由 OSTaskSuspend() 函数挂起的任务也可以接受消息，但这个任务将一直保持挂起状态直到通过调用 OSTaskResume() 函数恢复任务的运行。<br />
函数原型：void *OSQPend (OS_EVENT *pevent, INT16U timeout, INT8U *err);<br />
参数说明：pevent 是指向消息队列的指针，该指针的值在建立该队列时可以得到。（参考 OSQCreate() 函数）。<br />
         timeout 允许一个任务以指定数目的时钟节拍等待消息。超时后如果还没有得到消息则恢复成就绪状态。如果该值设置成零则表示任务将持续地等待消息，最大的等待时间为65535个时钟节拍。这个时间长度并不是非常严格的，可能存在一个时钟节拍的误差。<br />
         err 是指向包含错误码的变量的指针。OSQPend() 函数返回的错误码可能为下述几种：<br />
            * OS_NO_ERR ：消息被正确地接受。<br />
            * OS_TIMEOUT ：消息没有在指定的时钟周期数内接收到消息。<br />
            * OS_ERR_PEND_ISR ：从中断调用该函数。虽然规定了不允许从中断中调用该函数，但μC/OS-Ⅱ仍然包含了检测这种情况的功能。<br />
            * OS_ERR_EVENT_TYPE ：pevent 不是指向消息队列的指针。<br />
返回值：<br />
OSQPend() 函数返回取得的消息并将 *err 置为 OS_NO_ERR。如果没有在指定数目的时钟节拍内接受到消息，OSQPend() 函数返回空指针并将 *err 设置为 OS_TIMEOUT。</p>
<p><span style="color: #ff0000;">3 OSQPostFront()</span><br />
        该函数用于向消息队列发送消息。OSQPostFront() 函数和 OSQPost() 函数非常相似，不同之处在于 OSQPostFront() 函数将发送的消息插到消息队列的最前端。也就是说，OSQPostFront() 函数使得消息队列按照后入先出（LIFO）的方式工作，而不是先入先出（FIFO）。消息是一个指针长度的变量，在不同的应用中消息的含义也可能不同。如果队列中已经存满消息，则此调用将返回错误码。OSQPost() 函数也是如此。在调用此函数时如果有任何任务在等待队列中的消息，则最高优先级的任务将得到这个消息。如果等待消息的任务优先级比发送消息的任务优先级高，那么高优先级的任务在得到消息后将立即抢占当前任务执行，也就是说，将发生一次任务切换。<br />
函数原型：INT8U OSQPostFront(OS_EVENT *pevent, void *msg);<br />
参数说明：pevent 是指向即将接收消息的消息队列的指针。该指针的值在建立队列时可以得到。（参考 OSQCreate() 函数）。<br />
   msg 是即将发送的消息的指针。不允许传递一个空指针。<br />
返回值：<br />
OSQPostFront() 函数的返回值为下述之一：<br />
* OS_NO_ERR ：消息成功地放到消息队列中。<br />
* OS_Q_FULL ：消息队列已满。<br />
* OS_ERR_EVENT_TYPE ：pevent 不是指向消息队列的指针。</p>
<p><span style="color: #ff0000;">4 OSQPost()</span><br />
        该函数用于向消息队列发送消息。消息是一个指针长度的变量，在不同的应用中消息的含义也可能不同。如果队列中已经存满消息，则此调用返回错误码。如果有任何任务在等待队列中的消息，则最高优先级的任务将得到这个消息。如果等待消息的任务优先级比发送消息的任务优先级高，那么高优先级的任务将在得到消息后立即抢占当前任务执行，也就是说，将发生一次任务切换。消息是以先入先出（FIFO）方式进入队列的，即先进入队列的消息先被传递给任务。<br />
函数原型：INT8U OSQPost(OS_EVENT *pevent, void *msg);<br />
参数说明：pevent 是指向即将接受消息的消息队列的指针。该指针的值在建立队列时可以得到。（参考 OSQCreate() 函数）。<br />
         msg 是即将发送给队列的消息。不允许传递一个空指针。<br />
返回值：<br />
OSQPost() 函数的返回值为下述之一：<br />
* OS_NO_ERR ：消息成功地放到消息队列中。<br />
* OS_Q_FULL ：消息队列已满。<br />
* OS_ERR_EVENT_TYPE ：pevent 不是指向消息队列的指针。</p>
<p><span style="color: #ff0000;">5 OSQFlush()</span><br />
       该函数用于清空消息队列。<br />
函数原型：INT8U *OSQFlush（OS_EVENT *pevent）;<br />
参数说明：pevent 是指向消息队列的指针。该指针的值在建立队列时可以得到。（参考 OSQCreate() 函数）。<br />
返回值：<br />
OSQFlush() 函数的返回值为下述之一：<br />
* OS_NO_ERR ：消息队列被成功清空<br />
* OS_ERR_EVENT_TYPE ：试图清除不是消息队列的对象</p>
<p><span style="color: #ff0000;">6 OSQQuery()</span><br />
        该函数用来取得消息队列的信息。用户程序必须建立一个 OS_Q_DATA 的数据结构，该结构用来保存从消息队列的控制块得到的数据。通过调用该函数可以知道是否有任务在等待消息、有多少个任务在等待消息、队列中有多少消息以及消息队列可以容纳的消息数。OSQQuery() 函数还可以得到即将被传递给任务的消息。<br />
函数原型：INT8U OSQQuery(OS_EVENT *pevent, OS_Q_DATA *pdata);<br />
参数说明：pevent 是指向消息队列的指针。该指针的值在建立消息队列时可以得到。（参考 OSQCreate() 函数）。<br />
   pdata 是指向 OS_Q_DATA 数据结构的指针，该数据结构包含下述成员：<br />
void          *OSMsg;                        /* 下一个可用的消息 */<br />
INT16U        OSNMsgs;                       /* 队列中的消息数目 */<br />
INT16U        OSQSize;                       /* 消息队列的大小 */<br />
INT8U         OSEventTbl[OS_EVENT_TBL_SIZE]; /* 消息队列的等待队列 */<br />
INT8U         OSEventGrp；<br />
返回值：<br />
OSQQuery() 函数的返回值为下述之一：<br />
* OS_NO_ERR ：调用成功<br />
* OS_ERR_EVENT_TYPE ：pevent 不是指向消息队列的指针。</span></div>
]]></content:encoded>
			<wfw:commentRss>http://mcukaifa.com/mcudesign/157.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>入手了一黑莓手机,很是郁闷</title>
		<link>http://mcukaifa.com/news/zhatan/153.html</link>
		<comments>http://mcukaifa.com/news/zhatan/153.html#comments</comments>
		<pubDate>Fri, 20 Nov 2009 13:52:19 +0000</pubDate>
		<dc:creator>sowait</dc:creator>
				<category><![CDATA[杂谈]]></category>
		<category><![CDATA[手机]]></category>
		<category><![CDATA[黑莓]]></category>

		<guid isPermaLink="false">http://mcukaifa.com/?p=153</guid>
		<description><![CDATA[     之前用了快三年的S1在几次自由落体运动后,终于用是不是死机来表示抗义了.现在又刚上班,很多事情须要用<a href="http://mcukaifa.com/tag/%e6%89%8b%e6%9c%ba" title="查看 手机 的全部文章" target="_blank">手机</a>,没办法只好出血买手机了.
根据多年的用机经历[......]<p class='read-more'><a href='http://mcukaifa.com/news/zhatan/153.html'>继续阅读</a></p>]]></description>
			<content:encoded><![CDATA[<p>     之前用了快三年的S1在几次自由落体运动后,终于用是不是死机来表示抗义了.现在又刚上班,很多事情须要用<span class='wp_keywordlink_affiliate'><a href="http://mcukaifa.com/tag/%e6%89%8b%e6%9c%ba" title="查看 手机 的全部文章" target="_blank">手机</a></span>,没办法只好出血买手机了.</p>
<p>根据多年的用机经历,山塞机可能已不太适我了,所以只好买智能手机,当初锁定在多普达与NOKIA之间,由于之前在使用WM操作系统的手机都会有死机,睡死,闹钟变哑等现像(特别是闹钟变哑最让人抓狂).所以NOKIA我关注了很久,看中了NOKIA 5800,但那价格对于失业多年的我来说一直是个痛.</p>
<p>    前几天去买手机配件的地方,原本是要再买个S1的外壳,让我的老S1复活的,哪知道看到那老板居然放了两个<span class='wp_keywordlink_affiliate'><a href="http://mcukaifa.com/tag/%e9%bb%91%e8%8e%93" title="查看 黑莓 的全部文章" target="_blank">黑莓</a></span>手机在柜台上.早就知道那个美国第一个黑人老大也是用的<span class='wp_keywordlink_affiliate'><a href="http://mcukaifa.com/tag/%e9%bb%91%e8%8e%93" title="查看 黑莓 的全部文章" target="_blank">黑莓</a></span>手机,之前也好像听说黑莓手机是最稳定安全的智能手机.所以就叫老板拿出来看了看.卖糕的!居然还是全新的(根据我的砖业鉴定)&#8230;..型号是8300,价格是一千&#8230;在我印像中8300好像也是黑莓很新的一款,所以马上就心动了.在小测试了一下,最终以950元的价格买了下来,另外再加了50元,又买了一个原电(当时那老板有两个黑莓,他就把另一个上面的给了我).总共花了1K.马上回家慢慢研究去了.</p>
<p>     首先装上我以前S1上面用的8G的卡,开机,结果提示存储卡不能识别,须要格式化.没关系,取下来先把里面的资料保存到电脑后然后再格式化,放回手机.还是不能识别^o^!,&#8230;上网GG之,发现有人说最新版的OS是4.5版的改进了SD的支持,我现在是4.2版的,所以我打算刷机,经高人指点说刷机无风险.不过还是针扎了一下才决定刷机(我手上还有个HCT568的刷机砖头),下载到最新的OS后开始刷.黑莓刷机比HCT等WM系统的刷机真不是高一个级别,刷完后以前的软件居然都还在,不过刷机时间可不是一般的长&#8230;</p>
<p>     刷完机后,看了版本,的确刷到了传说的4.5版了.迫不急待地装入tf卡.结果任提示无法识别&#8230;我差点没吐血.最后终于使用手机自带的格式化媒体卡后搞定问题.满以为黑莓为了安全什么什么的,对卡使用了什么加密或是新的文件系统来加密格式化,把卡取下后用读卡器接入电脑,结果是只是在卡里创建了几个文件夹&#8230;&#8230;&#8230;.现在来装软件,我最常用的比如来电归属显示以及GBA模拟器,在论坛学习了一整晚上后,内心的不安终于得到证实:黑莓手机的系统相当地不开放,比NOKIA的SB系统都还要保守,我根本没有办法安装一个像WM系统中的来电精灵及短信大师那样的软件&#8230;你也不可以将程序装在卡中,只能放到机身内存中(太浪费我8G的卡了)..最要命的是我找不到一个好的中文输入法,只有个点讯输入法,但由于系统不开放,并不能完全集成到短信中去,现在只好在点讯的记事本中写好后再复制到短信界面中去,系统自代的双拼又用不习惯.唉&#8230;..</p>
<p>    现在来总结一下不满意黑莓的地方:</p>
<p>一:系统太不开放了,有点不像智能手机,只比MOTO的LINUX手机好那么一丁点,第三方软件不丰富,没什么API与系统权限也做不丰富.</p>
<p>二:全键盘容易按错键(很多人说这样做不错,这是我个人还没有用习惯的原因).</p>
<p>三:反应速度MS不太好,(特别是在播放视频的时候,短信之类的反应比NOKIA还有WM的都快)8300好像还是300+的CPU</p>
<p>四:正在感受中,待补充..</p>
<p>现在来说说他的优点与HCT的WM系统来相比一下,NOKIA的手机我只用了不到一个月那个手机就给小偷XX了(我的1500大洋啊),所以我不发表太多言论</p>
<p>一:待机时间   无论是NOKIA还是HTC,只能给黑莓提鞋,特别是HTC的,那些都是电老虎.</p>
<p>二:外放音质不错   NOKIA我用的是5320XM音乐手机,都比现在的8300差那么一丁点(印象中是如此),HCT的S1+完全不能比,不过用耳机就不一样了,WM系统的软件在多媒体功能上那可不是盖的&#8230;用耳机的话HTC的应该是最好的(须要第三方软件).当然所有的机器外放都与山塞机没得比&#8230;&#8230;</p>
<p>三:关机闹钟     WM的机器五年内别想有这功能</p>
<p>四:稳定性      NOKIA的机器我也没用多久,不发表什么&#8230;WM:我对微软出品的东西的稳定性从来不抱任何幻想,为什么我会买黑莓手机,WM手机的稳定性是最主要的原因.黑莓手机到现在用了五天左右,未死机或睡死,闹钟目前没有哑过&#8230;</p>
<p> </p>
<p>现在就写这么多.想到以后再加.</p>
]]></content:encoded>
			<wfw:commentRss>http://mcukaifa.com/news/zhatan/153.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
