<?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>BillWSY的生活 &#187; 代码如诗</title>
	<atom:link href="http://www.billwsy.com/category/coding/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.billwsy.com</link>
	<description>BillWSY - 写下我生活中的点滴</description>
	<lastBuildDate>Thu, 01 Dec 2011 09:10:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>关于LPC17xx固件库定时器的Bug</title>
		<link>http://www.billwsy.com/2011/02/lpc17xx-fw-timer-bug/</link>
		<comments>http://www.billwsy.com/2011/02/lpc17xx-fw-timer-bug/#comments</comments>
		<pubDate>Wed, 16 Feb 2011 04:56:35 +0000</pubDate>
		<dc:creator>BillWSY</dc:creator>
				<category><![CDATA[LPC17xx]]></category>

		<guid isPermaLink="false">http://www.billwsy.com/?p=182</guid>
		<description><![CDATA[在这篇日志里我提到了LPC17xx定时器部分的固件库有Bug，具体为作为计数器模式的时候固件库工作不正常，检查代码后发现有几处错误，此问题已反馈给NXP。这几天收到了NXP的答复，他们承认了这个错误并已将这个问题反馈给了相关的工程师。在报告Bug的过程中，我也尝试着修复这个Bug。下面是往来邮件和附件，包括问题的重现和我修改后的代码。



From: Case Notification [mailto:noreply@salesforce.com]

<span class="readmore"><a href="http://www.billwsy.com/2011/02/lpc17xx-fw-timer-bug/" title="关于LPC17xx固件库定时器的Bug">阅读全文——共3904字</a></span>]]></description>
			<content:encoded><![CDATA[<p>在<a href="http://www.billwsy.com/2011/02/lpc17xx-timer/">这篇日志</a>里我提到了LPC17xx定时器部分的固件库有Bug，具体为作为计数器模式的时候固件库工作不正常，检查代码后发现有几处错误，此问题已反馈给NXP。这几天收到了NXP的答复，他们承认了这个错误并已将这个问题反馈给了相关的工程师。在报告Bug的过程中，我也尝试着修复这个Bug。下面是往来邮件和附件，包括问题的重现和我修改后的代码。</p>
<blockquote>
<div id="_mcePaste">From: Case Notification [mailto:noreply@salesforce.com]</div>
<div id="_mcePaste">Sent: 2011 Feb 12 1:18 PM</div>
<div id="_mcePaste">To: Eric Wang</div>
<div id="_mcePaste">Subject: Case # 00001236: Bugs in LPC17xx Firmware library has been assigned to you.</div>
<div id="_mcePaste">*** New Case Assignment Notification ***</div>
<div id="_mcePaste">Following Case has been assigned to you:</div>
<div id="_mcePaste">Company:</div>
<div id="_mcePaste">Contact:</div>
<div id="_mcePaste">Case Number: 00001236</div>
<div id="_mcePaste">Subject: Bugs in LPC17xx Firmware library</div>
<div id="_mcePaste">Description: Related product: Microcontrollers, Cortex-M3 (32-bit), LPC1700</div>
<div id="_mcePaste">There might be a bug in LPC17xx Firmware library that when timer works in counter mode, the firmware library doesn&#8217;t work as expected. Some register names in the firmware code might be wrong(i.e. CCR and CTCR), and parameter check in the header files is also a mistake since it totally ignored counter falling mode etc.</div>
<div id="_mcePaste">bug fixed and update is expected.</div>
<div id="_mcePaste">Click on the link to access the Case: https://eu1.salesforce.com/500D000000E4byl</div>
</blockquote>
<blockquote>
<div>
<div>Hi Wang,</div>
<div>We just got a case from you.Thanks for your question.</div>
<div>Can you give more detail about your question?</div>
<div>How did you get the lib? From our website?</div>
<div>Lib can not work as expected, what are you expected?Is there any demo code?</div>
<div>You mean ” Some register names in the firmware code might be wrong(i.e. CCR and CTCR), and parameter check in the header files is also a mistake since it totally ignored counter falling mode etc.” Could you point it clearly?</div>
<div>If you provide more info, we could fix it asap.</div>
<div>Best Regards,</div>
<div>Eric Wang 王 超</div>
<div>PAE, MCU</div>
<div>NXP Semiconductor</div>
</div>
</blockquote>
<blockquote>
<div>
<div>Hi Wang,</div>
<div>Thank you for reply.</div>
<div>The lib is download from http://ics.nxp.com/support/documents/microcontrollers/?scope=LPC17xx , marked “LPC17xx CMSIS-Compliant Standard Peripheral Firmware Driver Library (GNU, Keil, IAR) “.</div>
<div>The user&#8217;s manual(UM10360) mentioned that timers in lpc17xx could be used as counters, which I think that on every certain edge on the certain pin would increase the counter by 1.</div>
<div>I&#8217;ll attach my demo project and you should extract the full library into it before run. I tested it with LPC1768.</div>
<div>I tried to correct the mistake and it&#8217;s also attached, I modified these lines</div>
<div>File lpc17xx_timer.h, Line 142</div>
<div>File lpc17xx_timer.c, Line 320, 321, 344, 346</div>
<div>I have comments on these lines and they begin with”//!!”</div>
<div>I&#8217;m not sure if there are more mistakes and you should have a double check on it.</div>
<div>Regards,</div>
<div>王盛业</div>
<div>复旦大学复旦学院克卿书院 10607班</div>
<div>复旦大学信息科学与工程学院 电子信息科学类</div>
</div>
</blockquote>
<blockquote>
<div>
<div>Hi,</div>
<div>Thanks for your info. I have a look and find following should be mistake. I will forward to related engineer to fix.</div>
<div>File lpc17xx_timer.h, Line 142</div>
<div>File lpc17xx_timer.c, Line 320, 321, 344, 346</div>
<div>For counter function, I will check and give you feedback at convenience.</div>
<div>Best Regards,</div>
<div>Eric Wang 王 超</div>
<div>PAE, MCU</div>
<div>NXP Semiconductor</div>
</div>
</blockquote>
<p>补充：后来又收到了NXP的邮件，算是总结性的答复。大致内容和上面的类似，然而可能我表达不清他以为我报告器件有Bug。学好英语很重要……</p>
<blockquote>
<div>
<div>Dear Shengye,</div>
<div>Your inquiry is resolved for your case 00001236: Bugs in LPC17xx Firmware library</div>
<div>Solution answer:</div>
<div>Hi Shengye,</div>
<div>Thanks for your mail.</div>
<div>I check the lib which can downlaod from link http://ics.nxp.com/support/documents/microcontrollers/zip/lpc17xx.cmsis.driver.library.zip .</div>
<div>For line 142 in lpc17xx_timer.h, #define PARAM_TIM_MODE_OPT(MODE)<span style="white-space: pre;"> </span>((MODE == TIM_TIMER_MODE)||(MODE == TIM_COUNTER_RISING_MODE)\</div>
<div>|| (MODE == TIM_COUNTER_RISING_MODE)||(MODE == TIM_COUNTER_RISING_MODE)) should be</div>
<div>#define PARAM_TIM_MODE_OPT(MODE)<span style="white-space: pre;"> </span>((MODE == TIM_TIMER_MODE)||(MODE == TIM_COUNTER_RISING_MODE)\</div>
<div>|| (MODE == TIM_COUNTER_FALLING_MODE)||(MODE == TIM_COUNTER_ANY_MODE)) .</div>
<div>For line 320, 344, 346 in lpc17xx_timer.c, TIMx-&gt;CCR should be TIMx-&gt;CTCR .</div>
<div>line 321 should beTIMx-&gt;CTCR |= TimerCounterMode;</div>
<div>I will forward to related engineer check and fix.</div>
<div>Btw, you refer that Counter register can not be incremented after related edge. Pls confirm that he frequency of the CAP input can not exceed one quarter of the PCLK clock. If exceed, count will not identify the edge.</div>
<div>Please let us know if this does not resolve your inquiry. Your ticket will remain closed if we do not hear from you.</div>
<div>Registration in my.NXP (www.nxp.com/my) is required for you to check your question status and/or submit a follow-up to your question. For any reference to this question, use the following number:</div>
<div>* Case# 00001236.</div>
<div>*** TIPS ***</div>
<div>- Please do not reply to this email, it has been sent automatically.</div>
<div>- Modify your junk or spam setting to allow incoming “nxp.com” e-mail addresses.</div>
<div>- Add the sender, “NXP Technical Support” to your list of known contacts.</div>
<div>Best Regards,</div>
<div>The NXP Technical Support Team</div>
<div>NXP Semiconductors</div>
</div>
</blockquote>
<div>附件：<a href="http://www.billwsy.com/wp-content/uploads/2011/02/bug-demo.zip">bug demo</a></div>
<div>仅供大家参考，希望下一个固件库的更新版本中能修复这个问题。</div>
]]></content:encoded>
			<wfw:commentRss>http://www.billwsy.com/2011/02/lpc17xx-fw-timer-bug/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>学习LPC17xx &#8211; IIC</title>
		<link>http://www.billwsy.com/2011/02/lpc17xx-iic/</link>
		<comments>http://www.billwsy.com/2011/02/lpc17xx-iic/#comments</comments>
		<pubDate>Sat, 12 Feb 2011 11:27:13 +0000</pubDate>
		<dc:creator>BillWSY</dc:creator>
				<category><![CDATA[LPC17xx]]></category>

		<guid isPermaLink="false">http://www.billwsy.com/?p=180</guid>
		<description><![CDATA[这是IIC操作EEPROM的例子。在调试过程中，误将从机地址写为0&#215;01010000而导致出错，这是十六进制而非二进制！



千万别傻傻地把从机地址弄错，0&#215;01010000这种错误不能犯！这是十六进制，不是二进制！

<span class="readmore"><a href="http://www.billwsy.com/2011/02/lpc17xx-iic/" title="学习LPC17xx &#8211; IIC">阅读全文——共1664字</a></span>]]></description>
			<content:encoded><![CDATA[<p>这是IIC操作EEPROM的例子。在调试过程中，误将从机地址写为0&#215;01010000而导致出错，这是十六进制而非二进制！</p>
<ul>
<li>千万别傻傻地把从机地址弄错，0&#215;01010000这种错误不能犯！这是十六进制，不是二进制！</li>
</ul>
<p>代码如下：</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p180code2'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p1802"><td class="code" id="p180code2"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;lpc17xx.h&gt;</span>
<span style="color: #339933;">#include &lt;stdint.h&gt;</span>
<span style="color: #339933;">#include &quot;lpc17xx_libcfg.h&quot;</span>
<span style="color: #339933;">#include &lt;debug_frmwrk.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_pinsel.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_i2c.h&gt;</span>
&nbsp;
uint32_t _DGETNUM<span style="color: #009900;">&#40;</span>uint8_t cnt<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	uint32_t rtn <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span>cnt<span style="color: #339933;">--</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		rtn <span style="color: #339933;">=</span> rtn <span style="color: #339933;">*</span> <span style="color: #0000dd;">10</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>_DG <span style="color: #339933;">-</span> <span style="color: #ff0000;">'0'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">return</span> rtn<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
uint8_t buf<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">100</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
uint32_t writeEEPROM<span style="color: #009900;">&#40;</span>uint32_t len<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	I2C_M_SETUP_Type i2ccfg<span style="color: #339933;">;</span>
	i2ccfg.<span style="color: #202020;">sl_addr7bit</span> <span style="color: #339933;">=</span> <span style="color: #208080;">0x50</span><span style="color: #339933;">;</span>
	i2ccfg.<span style="color: #202020;">tx_data</span> <span style="color: #339933;">=</span> buf<span style="color: #339933;">;</span>
	i2ccfg.<span style="color: #202020;">tx_length</span> <span style="color: #339933;">=</span> len<span style="color: #339933;">;</span>
	i2ccfg.<span style="color: #202020;">tx_count</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	i2ccfg.<span style="color: #202020;">rx_data</span> <span style="color: #339933;">=</span> NULL<span style="color: #339933;">;</span>
	i2ccfg.<span style="color: #202020;">rx_length</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	i2ccfg.<span style="color: #202020;">rx_count</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	i2ccfg.<span style="color: #202020;">retransmissions_max</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
	i2ccfg.<span style="color: #202020;">retransmissions_count</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	i2ccfg.<span style="color: #202020;">status</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
   	i2ccfg.<span style="color: #202020;">callback</span> <span style="color: #339933;">=</span> NULL<span style="color: #339933;">;</span>
	<span style="color: #b1b100;">return</span> I2C_MasterTransferData<span style="color: #009900;">&#40;</span>LPC_I2C0<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>i2ccfg<span style="color: #339933;">,</span> I2C_TRANSFER_POLLING<span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> SUCCESS<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
uint32_t readEEPROM<span style="color: #009900;">&#40;</span>uint32_t len<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	I2C_M_SETUP_Type i2ccfg<span style="color: #339933;">;</span>
	i2ccfg.<span style="color: #202020;">sl_addr7bit</span> <span style="color: #339933;">=</span> <span style="color: #208080;">0x50</span><span style="color: #339933;">;</span>
	i2ccfg.<span style="color: #202020;">tx_data</span> <span style="color: #339933;">=</span> buf<span style="color: #339933;">;</span>
	i2ccfg.<span style="color: #202020;">tx_length</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
	i2ccfg.<span style="color: #202020;">tx_count</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	i2ccfg.<span style="color: #202020;">rx_data</span> <span style="color: #339933;">=</span> buf <span style="color: #339933;">+</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
	i2ccfg.<span style="color: #202020;">rx_length</span> <span style="color: #339933;">=</span> len<span style="color: #339933;">;</span>
	i2ccfg.<span style="color: #202020;">rx_count</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	i2ccfg.<span style="color: #202020;">retransmissions_max</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">;</span>
	i2ccfg.<span style="color: #202020;">retransmissions_count</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	i2ccfg.<span style="color: #202020;">status</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
   	i2ccfg.<span style="color: #202020;">callback</span> <span style="color: #339933;">=</span> NULL<span style="color: #339933;">;</span>
	<span style="color: #b1b100;">return</span> I2C_MasterTransferData<span style="color: #009900;">&#40;</span>LPC_I2C0<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>i2ccfg<span style="color: #339933;">,</span> I2C_TRANSFER_POLLING<span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> SUCCESS<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">char</span> cmd<span style="color: #339933;">;</span>
	<span style="color: #993333;">int</span> i<span style="color: #339933;">;</span>
	uint8_t cnt<span style="color: #339933;">,</span> addr<span style="color: #339933;">;</span> 
	PINSEL_CFG_Type pincfg<span style="color: #339933;">;</span>
	debug_frmwrk_init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;I2C EEPROM Test(W to write and R to read)&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	pincfg.<span style="color: #202020;">Portnum</span> <span style="color: #339933;">=</span> PINSEL_PORT_0<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Pinnum</span> <span style="color: #339933;">=</span> PINSEL_PIN_27<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Funcnum</span> <span style="color: #339933;">=</span> PINSEL_FUNC_1<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Pinmode</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">OpenDrain</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	PINSEL_ConfigPin<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>pincfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	pincfg.<span style="color: #202020;">Portnum</span> <span style="color: #339933;">=</span> PINSEL_PORT_0<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Pinnum</span> <span style="color: #339933;">=</span> PINSEL_PIN_28<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Funcnum</span> <span style="color: #339933;">=</span> PINSEL_FUNC_1<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Pinmode</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">OpenDrain</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	PINSEL_ConfigPin<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>pincfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	I2C_Init<span style="color: #009900;">&#40;</span>LPC_I2C0<span style="color: #339933;">,</span> <span style="color: #0000dd;">100000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	I2C_Cmd<span style="color: #009900;">&#40;</span>LPC_I2C0<span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Command(C), Length(2), Address(3)&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		cmd <span style="color: #339933;">=</span> _DG<span style="color: #339933;">;</span>
		cnt <span style="color: #339933;">=</span> _DGETNUM<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		addr <span style="color: #339933;">=</span> _DGETNUM<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		buf<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> addr<span style="color: #339933;">;</span>
		<span style="color: #b1b100;">switch</span><span style="color: #009900;">&#40;</span>cmd<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'R'</span><span style="color: #339933;">:</span>
				<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>readEEPROM<span style="color: #009900;">&#40;</span>cnt<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> _DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Failed&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;=</span> cnt<span style="color: #339933;">;</span> <span style="color: #339933;">++</span> i<span style="color: #009900;">&#41;</span> _DBC<span style="color: #009900;">&#40;</span>buf<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
			<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'W'</span><span style="color: #339933;">:</span>
				i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
				<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span>cnt <span style="color: #339933;">--</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
					buf<span style="color: #009900;">&#91;</span><span style="color: #339933;">++</span> i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> _DG<span style="color: #339933;">;</span>
					_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">==</span> <span style="color: #0000dd;">8</span> <span style="color: #339933;">||</span> cnt <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
						<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>writeEEPROM<span style="color: #009900;">&#40;</span>i <span style="color: #339933;">+</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
							_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Failed&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
							i <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
							<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
						<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
							buf<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+=</span> <span style="color: #0000dd;">8</span><span style="color: #339933;">;</span>
							i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
						<span style="color: #009900;">&#125;</span>
					<span style="color: #009900;">&#125;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">!=</span> <span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> _DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Successed&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.billwsy.com/2011/02/lpc17xx-iic/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>学习LPC17xx &#8211; RTC</title>
		<link>http://www.billwsy.com/2011/02/lpc17xx-rtc/</link>
		<comments>http://www.billwsy.com/2011/02/lpc17xx-rtc/#comments</comments>
		<pubDate>Sat, 12 Feb 2011 09:57:29 +0000</pubDate>
		<dc:creator>BillWSY</dc:creator>
				<category><![CDATA[LPC17xx]]></category>

		<guid isPermaLink="false">http://www.billwsy.com/?p=178</guid>
		<description><![CDATA[一开始时RTC走的特别慢，而且时间间隔不确定，可能是由于某些复位值不确定。

一些复位值不确定的寄存器可能要另外初始化（不确定）



<span class="readmore"><a href="http://www.billwsy.com/2011/02/lpc17xx-rtc/" title="学习LPC17xx &#8211; RTC">阅读全文——共2429字</a></span>]]></description>
			<content:encoded><![CDATA[<ul>
<li>一开始时RTC走的特别慢，而且时间间隔不确定，可能是由于某些复位值不确定。</li>
<li>一些复位值不确定的寄存器可能要另外初始化（不确定）</li>
</ul>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p178code4'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p1784"><td class="code" id="p178code4"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;lpc17xx.h&gt;</span>
<span style="color: #339933;">#include &lt;stdint.h&gt;</span>
<span style="color: #339933;">#include &quot;lpc17xx_libcfg.h&quot;</span>
<span style="color: #339933;">#include &lt;debug_frmwrk.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_rtc.h&gt;</span>
&nbsp;
uint32_t _DGETNUM<span style="color: #009900;">&#40;</span>uint8_t cnt<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	uint32_t rtn <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span>cnt<span style="color: #339933;">--</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		rtn <span style="color: #339933;">=</span> rtn <span style="color: #339933;">*</span> <span style="color: #0000dd;">10</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>_DG <span style="color: #339933;">-</span> <span style="color: #ff0000;">'0'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">return</span> rtn<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
RTC_TIME_Type rtctim<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">void</span> readrtctim<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	_DBG<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Second : &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> rtctim.<span style="color: #202020;">SEC</span> <span style="color: #339933;">=</span> _DGETNUM<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBD32<span style="color: #009900;">&#40;</span>rtctim.<span style="color: #202020;">SEC</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBG<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Minute : &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> rtctim.<span style="color: #202020;">MIN</span> <span style="color: #339933;">=</span> _DGETNUM<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBD32<span style="color: #009900;">&#40;</span>rtctim.<span style="color: #202020;">MIN</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBG<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Hour   : &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> rtctim.<span style="color: #202020;">HOUR</span> <span style="color: #339933;">=</span> _DGETNUM<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBD32<span style="color: #009900;">&#40;</span>rtctim.<span style="color: #202020;">HOUR</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBG<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;D of M : &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> rtctim.<span style="color: #202020;">DOM</span> <span style="color: #339933;">=</span> _DGETNUM<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBD32<span style="color: #009900;">&#40;</span>rtctim.<span style="color: #202020;">DOM</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBG<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;D of W : &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> rtctim.<span style="color: #202020;">DOW</span> <span style="color: #339933;">=</span> _DGETNUM<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBD32<span style="color: #009900;">&#40;</span>rtctim.<span style="color: #202020;">DOW</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBG<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;D of Y : &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> rtctim.<span style="color: #202020;">DOY</span> <span style="color: #339933;">=</span> _DGETNUM<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBD32<span style="color: #009900;">&#40;</span>rtctim.<span style="color: #202020;">DOY</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 	_DBG<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Month  : &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> rtctim.<span style="color: #202020;">MONTH</span> <span style="color: #339933;">=</span> _DGETNUM<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBD32<span style="color: #009900;">&#40;</span>rtctim.<span style="color: #202020;">MONTH</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBG<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Year   : &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> rtctim.<span style="color: #202020;">YEAR</span> <span style="color: #339933;">=</span> _DGETNUM<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBD32<span style="color: #009900;">&#40;</span>rtctim.<span style="color: #202020;">YEAR</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;**********************************************************************&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> writertctim<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	_DBG<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Second : &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBD32<span style="color: #009900;">&#40;</span>rtctim.<span style="color: #202020;">SEC</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBG<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Minute : &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBD32<span style="color: #009900;">&#40;</span>rtctim.<span style="color: #202020;">MIN</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBG<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Hour   : &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBD32<span style="color: #009900;">&#40;</span>rtctim.<span style="color: #202020;">HOUR</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBG<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;D of M : &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBD32<span style="color: #009900;">&#40;</span>rtctim.<span style="color: #202020;">DOM</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBG<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;D of W : &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBD32<span style="color: #009900;">&#40;</span>rtctim.<span style="color: #202020;">DOW</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBG<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;D of Y : &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBD32<span style="color: #009900;">&#40;</span>rtctim.<span style="color: #202020;">DOY</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 	_DBG<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Month  : &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBD32<span style="color: #009900;">&#40;</span>rtctim.<span style="color: #202020;">MONTH</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBG<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Year   : &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBD32<span style="color: #009900;">&#40;</span>rtctim.<span style="color: #202020;">YEAR</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;**********************************************************************&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">char</span> cmd<span style="color: #339933;">;</span>
	uint32_t ch<span style="color: #339933;">;</span>
	debug_frmwrk_init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;RTC Test Time(S to set and G to Get), Reg(W to write and R to read)&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	RTC_Init<span style="color: #009900;">&#40;</span>LPC_RTC<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	RTC_ResetClockTickCounter<span style="color: #009900;">&#40;</span>LPC_RTC<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	RTC_Cmd<span style="color: #009900;">&#40;</span>LPC_RTC<span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	RTC_CalibCounterCmd<span style="color: #009900;">&#40;</span>LPC_RTC<span style="color: #339933;">,</span> DISABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	RTC_CntIncrIntConfig<span style="color: #009900;">&#40;</span>LPC_RTC<span style="color: #339933;">,</span> RTC_TIMETYPE_SECOND<span style="color: #339933;">,</span> DISABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	RTC_CntIncrIntConfig<span style="color: #009900;">&#40;</span>LPC_RTC<span style="color: #339933;">,</span> RTC_TIMETYPE_MINUTE<span style="color: #339933;">,</span> DISABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	RTC_CntIncrIntConfig<span style="color: #009900;">&#40;</span>LPC_RTC<span style="color: #339933;">,</span> RTC_TIMETYPE_HOUR<span style="color: #339933;">,</span> DISABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	RTC_CntIncrIntConfig<span style="color: #009900;">&#40;</span>LPC_RTC<span style="color: #339933;">,</span> RTC_TIMETYPE_DAYOFWEEK<span style="color: #339933;">,</span> DISABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	RTC_CntIncrIntConfig<span style="color: #009900;">&#40;</span>LPC_RTC<span style="color: #339933;">,</span> RTC_TIMETYPE_DAYOFMONTH<span style="color: #339933;">,</span> DISABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	RTC_CntIncrIntConfig<span style="color: #009900;">&#40;</span>LPC_RTC<span style="color: #339933;">,</span> RTC_TIMETYPE_DAYOFYEAR<span style="color: #339933;">,</span> DISABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	RTC_CntIncrIntConfig<span style="color: #009900;">&#40;</span>LPC_RTC<span style="color: #339933;">,</span> RTC_TIMETYPE_MONTH<span style="color: #339933;">,</span> DISABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	RTC_CntIncrIntConfig<span style="color: #009900;">&#40;</span>LPC_RTC<span style="color: #339933;">,</span> RTC_TIMETYPE_YEAR<span style="color: #339933;">,</span> DISABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		cmd <span style="color: #339933;">=</span> _DG<span style="color: #339933;">;</span>
		<span style="color: #b1b100;">switch</span><span style="color: #009900;">&#40;</span>cmd<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'S'</span><span style="color: #339933;">:</span>
				readrtctim<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				RTC_SetFullTime<span style="color: #009900;">&#40;</span>LPC_RTC<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>rtctim<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
			<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'G'</span><span style="color: #339933;">:</span>
				RTC_GetFullTime<span style="color: #009900;">&#40;</span>LPC_RTC<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>rtctim<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				writertctim<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
			<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'W'</span><span style="color: #339933;">:</span>
				_DBG<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Channel : &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				ch <span style="color: #339933;">=</span> _DGETNUM<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				_DBD<span style="color: #009900;">&#40;</span>ch<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				RTC_WriteGPREG<span style="color: #009900;">&#40;</span>LPC_RTC<span style="color: #339933;">,</span> ch<span style="color: #339933;">,</span> _DGETNUM<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">10</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				_DBD32<span style="color: #009900;">&#40;</span>RTC_ReadGPREG<span style="color: #009900;">&#40;</span>LPC_RTC<span style="color: #339933;">,</span> ch<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
			<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">'R'</span><span style="color: #339933;">:</span>
				_DBG<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Channel : &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				ch <span style="color: #339933;">=</span> _DGETNUM<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				_DBD<span style="color: #009900;">&#40;</span>ch<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				_DBD32<span style="color: #009900;">&#40;</span>RTC_ReadGPREG<span style="color: #009900;">&#40;</span>LPC_RTC<span style="color: #339933;">,</span> ch<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span> 
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.billwsy.com/2011/02/lpc17xx-rtc/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>学习LPC17xx &#8211; 看门狗</title>
		<link>http://www.billwsy.com/2011/02/lpc17xx-wdt/</link>
		<comments>http://www.billwsy.com/2011/02/lpc17xx-wdt/#comments</comments>
		<pubDate>Sat, 12 Feb 2011 09:46:16 +0000</pubDate>
		<dc:creator>BillWSY</dc:creator>
				<category><![CDATA[LPC17xx]]></category>

		<guid isPermaLink="false">http://www.billwsy.com/?p=176</guid>
		<description><![CDATA[看门狗能在芯片运行错误的时候复位系统。LPC17xx的看门狗提供了一个“中断模式”，当看门狗超时时进入中断。然而这个中断不能被关闭，而且实际应用的时候不应该使用中断模式，仅是为了调试方便。



若设置成中断模式，那么中断标志不能被软件清零，除非复位。要禁用中断，需要在NVIC中关闭。中断模式的作用就是为了调试看门狗，不让器件复位。

<span class="readmore"><a href="http://www.billwsy.com/2011/02/lpc17xx-wdt/" title="学习LPC17xx &#8211; 看门狗">阅读全文——共601字</a></span>]]></description>
			<content:encoded><![CDATA[<p>看门狗能在芯片运行错误的时候复位系统。LPC17xx的看门狗提供了一个“中断模式”，当看门狗超时时进入中断。然而这个中断不能被关闭，而且实际应用的时候不应该使用中断模式，仅是为了调试方便。</p>
<ul>
<li>若设置成中断模式，那么中断标志不能被软件清零，除非复位。要禁用中断，需要在NVIC中关闭。中断模式的作用就是为了调试看门狗，不让器件复位。</li>
</ul>
<p>代码通过触发一个外部中断让程序进入死循环而不能正常喂狗，而迫使看门狗复位。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p176code6'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p1766"><td class="code" id="p176code6"><pre class="c" style="font-family:monospace;">&nbsp;
<span style="color: #339933;">#include &lt;lpc17xx.h&gt;</span>
<span style="color: #339933;">#include &quot;lpc17xx_libcfg.h&quot;</span>
<span style="color: #339933;">#include &lt;debug_frmwrk.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_gpio.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_nvic.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_systick.h&gt;</span>
<span style="color: #339933;">#include &lt;stdint.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_exti.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_pinsel.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_wdt.h&gt;</span>
&nbsp;
<span style="color: #993333;">volatile</span> uint8_t led7<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">volatile</span> uint32_t SysTickCnt<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">void</span> EINT3_IRQHandler<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Int Triggered&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">//dead here</span>
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> SysTick_Handler<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	SysTickCnt<span style="color: #339933;">++;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	uint32_t prv<span style="color: #339933;">;</span>
	uint8_t i<span style="color: #339933;">;</span>
	PINSEL_CFG_Type pincfg<span style="color: #339933;">;</span>
	debug_frmwrk_init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;System Start/Reset&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	GPIO_SetDir<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x000000FF</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	GPIO_SetDir<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">11</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	SYSTICK_InternalInit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//the maximum value should not exceed the 24 bit systick counter</span>
	SYSTICK_Cmd<span style="color: #009900;">&#40;</span>ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	SYSTICK_IntCmd<span style="color: #009900;">&#40;</span>ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   	GPIO_IntCmd<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">10</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	pincfg.<span style="color: #202020;">Portnum</span> <span style="color: #339933;">=</span> PINSEL_PORT_2<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Pinnum</span> <span style="color: #339933;">=</span> PINSEL_PIN_10<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Funcnum</span> <span style="color: #339933;">=</span> PINSEL_FUNC_0<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Pinmode</span> <span style="color: #339933;">=</span> PINSEL_PINMODE_PULLUP<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">OpenDrain</span> <span style="color: #339933;">=</span> PINSEL_PINMODE_NORMAL<span style="color: #339933;">;</span>
&nbsp;
	PINSEL_ConfigPin<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>pincfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	NVIC_SetPriority<span style="color: #009900;">&#40;</span>SysTick_IRQn<span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	NVIC_SetPriority<span style="color: #009900;">&#40;</span>EINT3_IRQn<span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	NVIC_EnableIRQ<span style="color: #009900;">&#40;</span>EINT3_IRQn<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	WDT_Init<span style="color: #009900;">&#40;</span>WDT_CLKSRC_IRC<span style="color: #339933;">,</span> WDT_MODE_RESET<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	WDT_Start<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">100000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;=</span> <span style="color: #0000dd;">7</span><span style="color: #339933;">;</span> <span style="color: #339933;">++</span> i<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			GPIO_SetValue<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> i<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			prv <span style="color: #339933;">=</span> SysTickCnt<span style="color: #339933;">;</span>
			<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span>SysTickCnt <span style="color: #339933;">-</span> prv <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			GPIO_ClearValue<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> i<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			WDT_Feed<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.billwsy.com/2011/02/lpc17xx-wdt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>学习LPC17xx &#8211; DAC</title>
		<link>http://www.billwsy.com/2011/02/lpc17xx-dac/</link>
		<comments>http://www.billwsy.com/2011/02/lpc17xx-dac/#comments</comments>
		<pubDate>Sat, 12 Feb 2011 09:41:42 +0000</pubDate>
		<dc:creator>BillWSY</dc:creator>
				<category><![CDATA[LPC17xx]]></category>

		<guid isPermaLink="false">http://www.billwsy.com/?p=174</guid>
		<description><![CDATA[LPC17xx的DAC操作比较简单。除此外它还支持DMA访问，所以可能可以方便的合成数字信号。



若没有选择对应的引脚，那么DAC不会启动，对其寄存器访问会产生硬错误

<span class="readmore"><a href="http://www.billwsy.com/2011/02/lpc17xx-dac/" title="学习LPC17xx &#8211; DAC">阅读全文——共642字</a></span>]]></description>
			<content:encoded><![CDATA[<p>LPC17xx的DAC操作比较简单。除此外它还支持DMA访问，所以可能可以方便的合成数字信号。</p>
<ul>
<li>若没有选择对应的引脚，那么DAC不会启动，对其寄存器访问会产生硬错误</li>
</ul>
<p>代码：从0开始，每0.1秒将DAC的值增加1，同时采集ADC的值输出到串口。只要将DAC输出和ADC输入连接，就可以看到采样值。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p174code8'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p1748"><td class="code" id="p174code8"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;lpc17xx.h&gt;</span>
<span style="color: #339933;">#include &quot;lpc17xx_libcfg.h&quot;</span>
<span style="color: #339933;">#include &lt;debug_frmwrk.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_nvic.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_pinsel.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_dac.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_adc.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_systick.h&gt;</span>
<span style="color: #666666; font-style: italic;">//#include &lt;core_cm3.h&gt;</span>
&nbsp;
<span style="color: #993333;">volatile</span> <span style="color: #993333;">int</span> SysTickCnt<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">void</span> SysTick_Handler<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	SysTickCnt<span style="color: #339933;">++;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	PINSEL_CFG_Type pincfg<span style="color: #339933;">;</span>
	<span style="color: #993333;">int</span> prv<span style="color: #339933;">;</span>
	<span style="color: #993333;">int</span> cur <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
	debug_frmwrk_init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;DAC Test&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//PWM Pins and Channels</span>
&nbsp;
	pincfg.<span style="color: #202020;">Portnum</span> <span style="color: #339933;">=</span> PINSEL_PORT_0<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Pinnum</span> <span style="color: #339933;">=</span> PINSEL_PIN_26<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Funcnum</span> <span style="color: #339933;">=</span> PINSEL_FUNC_2<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Pinmode</span> <span style="color: #339933;">=</span> PINSEL_PINMODE_TRISTATE<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">OpenDrain</span> <span style="color: #339933;">=</span> PINSEL_PINMODE_NORMAL<span style="color: #339933;">;</span>
	PINSEL_ConfigPin<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>pincfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	DAC_Init<span style="color: #009900;">&#40;</span>LPC_DAC<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	DAC_UpdateValue<span style="color: #009900;">&#40;</span>LPC_DAC<span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">10</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	SYSTICK_InternalInit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//the maximum value should not exceed the 24 bit systick counter</span>
	SYSTICK_Cmd<span style="color: #009900;">&#40;</span>ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	SYSTICK_IntCmd<span style="color: #009900;">&#40;</span>ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	pincfg.<span style="color: #202020;">Portnum</span> <span style="color: #339933;">=</span> PINSEL_PORT_1<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Pinnum</span> <span style="color: #339933;">=</span> PINSEL_PIN_31<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Funcnum</span> <span style="color: #339933;">=</span> PINSEL_FUNC_3<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Pinmode</span> <span style="color: #339933;">=</span> PINSEL_PINMODE_TRISTATE<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">OpenDrain</span> <span style="color: #339933;">=</span> PINSEL_PINMODE_NORMAL<span style="color: #339933;">;</span>
&nbsp;
	PINSEL_ConfigPin<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>pincfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	ADC_Init<span style="color: #009900;">&#40;</span>LPC_ADC<span style="color: #339933;">,</span> <span style="color: #0000dd;">200000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	ADC_ChannelCmd<span style="color: #009900;">&#40;</span>LPC_ADC<span style="color: #339933;">,</span> <span style="color: #0000dd;">5</span><span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	ADC_BurstCmd<span style="color: #009900;">&#40;</span>LPC_ADC<span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	ADC_StartCmd<span style="color: #009900;">&#40;</span>LPC_ADC<span style="color: #339933;">,</span> ADC_START_CONTINUOUS<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>ADC_ChannelGetStatus<span style="color: #009900;">&#40;</span>LPC_ADC<span style="color: #339933;">,</span> <span style="color: #0000dd;">5</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		_DBD16<span style="color: #009900;">&#40;</span>ADC_ChannelGetData<span style="color: #009900;">&#40;</span>LPC_ADC<span style="color: #339933;">,</span> <span style="color: #0000dd;">5</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		prv <span style="color: #339933;">=</span> SysTickCnt<span style="color: #339933;">;</span>
		<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span>SysTickCnt <span style="color: #339933;">&lt;</span> prv <span style="color: #339933;">+</span> <span style="color: #0000dd;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		cur <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>cur <span style="color: #339933;">+</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">10</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		DAC_UpdateValue<span style="color: #009900;">&#40;</span>LPC_DAC<span style="color: #339933;">,</span> cur<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.billwsy.com/2011/02/lpc17xx-dac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>学习LPC17xx &#8211; ADC</title>
		<link>http://www.billwsy.com/2011/02/lpc17xx-adc/</link>
		<comments>http://www.billwsy.com/2011/02/lpc17xx-adc/#comments</comments>
		<pubDate>Sat, 12 Feb 2011 09:29:10 +0000</pubDate>
		<dc:creator>BillWSY</dc:creator>
				<category><![CDATA[LPC17xx]]></category>

		<guid isPermaLink="false">http://www.billwsy.com/?p=172</guid>
		<description><![CDATA[LPC17xx的ADC可以工作于两种模式：软件突发模式和自动模式。软件突发模式下，每一次转换都需要软件去触发。自动模式下，ADC会自动去转换选定的通道，并可选的触发中断。以下代码分别为软件突发和自动转换。



Burst模式指的是由硬件自动控制，非Burst每次必须手动Start。

<span class="readmore"><a href="http://www.billwsy.com/2011/02/lpc17xx-adc/" title="学习LPC17xx &#8211; ADC">阅读全文——共2062字</a></span>]]></description>
			<content:encoded><![CDATA[<p>LPC17xx的ADC可以工作于两种模式：软件突发模式和自动模式。软件突发模式下，每一次转换都需要软件去触发。自动模式下，ADC会自动去转换选定的通道，并可选的触发中断。以下代码分别为软件突发和自动转换。</p>
<ul>
<li>Burst模式指的是由硬件自动控制，非Burst每次必须手动Start。</li>
<li>时钟频率不能超过200,000 Hz</li>
</ul>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p172code11'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p17211"><td class="code" id="p172code11"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;lpc17xx.h&gt;</span>
<span style="color: #339933;">#include &quot;lpc17xx_libcfg.h&quot;</span>
<span style="color: #339933;">#include &lt;debug_frmwrk.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_nvic.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_pinsel.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_adc.h&gt;</span>
&nbsp;
<span style="color: #993333;">volatile</span> <span style="color: #993333;">int</span> SysTickCnt<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">void</span> SysTick_Handler<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	SysTickCnt<span style="color: #339933;">++;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">int</span> prv<span style="color: #339933;">;</span>
	PINSEL_CFG_Type pincfg<span style="color: #339933;">;</span>
&nbsp;
	SYSTICK_InternalInit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//the maximum value should not exceed the 24 bit systick counter</span>
	SYSTICK_Cmd<span style="color: #009900;">&#40;</span>ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	SYSTICK_IntCmd<span style="color: #009900;">&#40;</span>ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	debug_frmwrk_init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;ADC Test&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	pincfg.<span style="color: #202020;">Portnum</span> <span style="color: #339933;">=</span> PINSEL_PORT_1<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Pinnum</span> <span style="color: #339933;">=</span> PINSEL_PIN_31<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Funcnum</span> <span style="color: #339933;">=</span> PINSEL_FUNC_3<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Pinmode</span> <span style="color: #339933;">=</span> PINSEL_PINMODE_TRISTATE<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">OpenDrain</span> <span style="color: #339933;">=</span> PINSEL_PINMODE_NORMAL<span style="color: #339933;">;</span>
&nbsp;
	PINSEL_ConfigPin<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>pincfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	ADC_Init<span style="color: #009900;">&#40;</span>LPC_ADC<span style="color: #339933;">,</span> <span style="color: #0000dd;">200000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	ADC_ChannelCmd<span style="color: #009900;">&#40;</span>LPC_ADC<span style="color: #339933;">,</span> <span style="color: #0000dd;">5</span><span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	ADC_BurstCmd<span style="color: #009900;">&#40;</span>LPC_ADC<span style="color: #339933;">,</span> DISABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		ADC_StartCmd<span style="color: #009900;">&#40;</span>LPC_ADC<span style="color: #339933;">,</span> ADC_START_NOW<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>ADC_ChannelGetStatus<span style="color: #009900;">&#40;</span>LPC_ADC<span style="color: #339933;">,</span> <span style="color: #0000dd;">5</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		_DBD16<span style="color: #009900;">&#40;</span>ADC_ChannelGetData<span style="color: #009900;">&#40;</span>LPC_ADC<span style="color: #339933;">,</span> <span style="color: #0000dd;">5</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		prv <span style="color: #339933;">=</span> SysTickCnt<span style="color: #339933;">;</span>
		<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span>SysTickCnt <span style="color: #339933;">&lt;</span> prv <span style="color: #339933;">+</span> <span style="color: #0000dd;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>


<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p172code12'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p17212"><td class="code" id="p172code12"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;lpc17xx.h&gt;</span>
<span style="color: #339933;">#include &quot;lpc17xx_libcfg.h&quot;</span>
<span style="color: #339933;">#include &lt;debug_frmwrk.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_nvic.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_pinsel.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_adc.h&gt;</span>
&nbsp;
<span style="color: #993333;">volatile</span> <span style="color: #993333;">int</span> SysTickCnt<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">void</span> SysTick_Handler<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	SysTickCnt<span style="color: #339933;">++;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">int</span> prv<span style="color: #339933;">;</span>
	PINSEL_CFG_Type pincfg<span style="color: #339933;">;</span>
&nbsp;
	SYSTICK_InternalInit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//the maximum value should not exceed the 24 bit systick counter</span>
	SYSTICK_Cmd<span style="color: #009900;">&#40;</span>ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	SYSTICK_IntCmd<span style="color: #009900;">&#40;</span>ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	debug_frmwrk_init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;ADC Test&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	pincfg.<span style="color: #202020;">Portnum</span> <span style="color: #339933;">=</span> PINSEL_PORT_1<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Pinnum</span> <span style="color: #339933;">=</span> PINSEL_PIN_31<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Funcnum</span> <span style="color: #339933;">=</span> PINSEL_FUNC_3<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Pinmode</span> <span style="color: #339933;">=</span> PINSEL_PINMODE_TRISTATE<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">OpenDrain</span> <span style="color: #339933;">=</span> PINSEL_PINMODE_NORMAL<span style="color: #339933;">;</span>
&nbsp;
	PINSEL_ConfigPin<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>pincfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
	pincfg.<span style="color: #202020;">Portnum</span> <span style="color: #339933;">=</span> PINSEL_PORT_0<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Pinnum</span> <span style="color: #339933;">=</span> PINSEL_PIN_26<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Funcnum</span> <span style="color: #339933;">=</span> PINSEL_FUNC_1<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Pinmode</span> <span style="color: #339933;">=</span> PINSEL_PINMODE_TRISTATE<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">OpenDrain</span> <span style="color: #339933;">=</span> PINSEL_PINMODE_NORMAL<span style="color: #339933;">;</span>
&nbsp;
	PINSEL_ConfigPin<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>pincfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	ADC_Init<span style="color: #009900;">&#40;</span>LPC_ADC<span style="color: #339933;">,</span> <span style="color: #0000dd;">200000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	ADC_ChannelCmd<span style="color: #009900;">&#40;</span>LPC_ADC<span style="color: #339933;">,</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	ADC_ChannelCmd<span style="color: #009900;">&#40;</span>LPC_ADC<span style="color: #339933;">,</span> <span style="color: #0000dd;">5</span><span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	ADC_BurstCmd<span style="color: #009900;">&#40;</span>LPC_ADC<span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	ADC_StartCmd<span style="color: #009900;">&#40;</span>LPC_ADC<span style="color: #339933;">,</span> ADC_START_CONTINUOUS<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>ADC_ChannelGetStatus<span style="color: #009900;">&#40;</span>LPC_ADC<span style="color: #339933;">,</span> <span style="color: #0000dd;">5</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		_DBD16<span style="color: #009900;">&#40;</span>ADC_ChannelGetData<span style="color: #009900;">&#40;</span>LPC_ADC<span style="color: #339933;">,</span> <span style="color: #0000dd;">5</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot; : Channel 5&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>ADC_ChannelGetStatus<span style="color: #009900;">&#40;</span>LPC_ADC<span style="color: #339933;">,</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		_DBD16<span style="color: #009900;">&#40;</span>ADC_ChannelGetData<span style="color: #009900;">&#40;</span>LPC_ADC<span style="color: #339933;">,</span> <span style="color: #0000dd;">3</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot; : Channel 3&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		prv <span style="color: #339933;">=</span> SysTickCnt<span style="color: #339933;">;</span>
		<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span>SysTickCnt <span style="color: #339933;">&lt;</span> prv <span style="color: #339933;">+</span> <span style="color: #0000dd;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.billwsy.com/2011/02/lpc17xx-adc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>学习LPC17xx &#8211; PWM</title>
		<link>http://www.billwsy.com/2011/02/lpc17xx-pwm/</link>
		<comments>http://www.billwsy.com/2011/02/lpc17xx-pwm/#comments</comments>
		<pubDate>Sat, 12 Feb 2011 08:17:22 +0000</pubDate>
		<dc:creator>BillWSY</dc:creator>
				<category><![CDATA[LPC17xx]]></category>

		<guid isPermaLink="false">http://www.billwsy.com/?p=167</guid>
		<description><![CDATA[PWM和Timer类似，唯一不同的是它有6个输出匹配通道，而且可以配置为双边沿模式，即每路的PWM可以不是共边沿的。笔记、代码和输出效果如下：





<span class="readmore"><a href="http://www.billwsy.com/2011/02/lpc17xx-pwm/" title="学习LPC17xx &#8211; PWM">阅读全文——共3393字</a></span>]]></description>
			<content:encoded><![CDATA[<p>PWM和Timer类似，唯一不同的是它有6个输出匹配通道，而且可以配置为双边沿模式，即每路的PWM可以不是共边沿的。笔记、代码和输出效果如下：</p>
<div id="_mcePaste">
<ul>
<li>PWM_ChannelConfig不能用在通道1上，因为通道1不可能作为双边沿输出。</li>
<li>PWM_Cmd仅使能PWM输出，PWM_CounterCmd才会启动定时器，才真正开始。</li>
</ul>
</div>
<p><a href="http://www.billwsy.com/wp-content/uploads/2011/02/pwm-single.png"><img src="http://www.billwsy.com/wp-content/uploads/2011/02/pwm-single.png" alt="" title="pwm-single" width="320" height="234" class="alignnone size-full wp-image-168" /></a></p>
<p><a href="http://www.billwsy.com/wp-content/uploads/2011/02/pwm-dual.png"><img src="http://www.billwsy.com/wp-content/uploads/2011/02/pwm-dual.png" alt="" title="pwm-dual" width="320" height="234" class="alignnone size-full wp-image-169" /></a><br />
<span id="more-167"></span></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p167code15'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p16715"><td class="code" id="p167code15"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;lpc17xx.h&gt;</span>
<span style="color: #339933;">#include &quot;lpc17xx_libcfg.h&quot;</span>
<span style="color: #339933;">#include &lt;debug_frmwrk.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_nvic.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_rit.h&gt;</span>
<span style="color: #339933;">#include &lt;stdint.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_exti.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_pinsel.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_pwm.h&gt;</span>
<span style="color: #666666; font-style: italic;">//#include &lt;core_cm3.h&gt;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	PWM_TIMERCFG_Type timcfg<span style="color: #339933;">;</span>
	PWM_MATCHCFG_Type matcfg<span style="color: #339933;">;</span>
	PINSEL_CFG_Type pincfg<span style="color: #339933;">;</span>
&nbsp;
	debug_frmwrk_init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;PWM Test&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	pincfg.<span style="color: #202020;">Portnum</span> <span style="color: #339933;">=</span> PINSEL_PORT_2<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Pinnum</span> <span style="color: #339933;">=</span> PINSEL_PIN_0<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Funcnum</span> <span style="color: #339933;">=</span> PINSEL_FUNC_1<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Pinmode</span> <span style="color: #339933;">=</span> PINSEL_PINMODE_TRISTATE<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">OpenDrain</span> <span style="color: #339933;">=</span> PINSEL_PINMODE_NORMAL<span style="color: #339933;">;</span>
&nbsp;
	PINSEL_ConfigPin<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>pincfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	pincfg.<span style="color: #202020;">Portnum</span> <span style="color: #339933;">=</span> PINSEL_PORT_2<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Pinnum</span> <span style="color: #339933;">=</span> PINSEL_PIN_1<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Funcnum</span> <span style="color: #339933;">=</span> PINSEL_FUNC_1<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Pinmode</span> <span style="color: #339933;">=</span> PINSEL_PINMODE_TRISTATE<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">OpenDrain</span> <span style="color: #339933;">=</span> PINSEL_PINMODE_NORMAL<span style="color: #339933;">;</span>
&nbsp;
	PINSEL_ConfigPin<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>pincfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	timcfg.<span style="color: #202020;">PrescaleOption</span> <span style="color: #339933;">=</span> PWM_TIMER_PRESCALE_TICKVAL<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//TIM_PRESCALE_USVAL</span>
	timcfg.<span style="color: #202020;">PrescaleValue</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
	PWM_Init<span style="color: #009900;">&#40;</span>LPC_PWM1<span style="color: #339933;">,</span> PWM_MODE_TIMER<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>timcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	matcfg.<span style="color: #202020;">MatchChannel</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">IntOnMatch</span> <span style="color: #339933;">=</span> DISABLE<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">StopOnMatch</span> <span style="color: #339933;">=</span> DISABLE<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">ResetOnMatch</span> <span style="color: #339933;">=</span> ENABLE<span style="color: #339933;">;</span>
	PWM_ConfigMatch<span style="color: #009900;">&#40;</span>LPC_PWM1<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>matcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	matcfg.<span style="color: #202020;">MatchChannel</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">IntOnMatch</span> <span style="color: #339933;">=</span> DISABLE<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">StopOnMatch</span> <span style="color: #339933;">=</span> DISABLE<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">ResetOnMatch</span> <span style="color: #339933;">=</span> DISABLE<span style="color: #339933;">;</span>
	PWM_ConfigMatch<span style="color: #009900;">&#40;</span>LPC_PWM1<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>matcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	matcfg.<span style="color: #202020;">MatchChannel</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">IntOnMatch</span> <span style="color: #339933;">=</span> DISABLE<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">StopOnMatch</span> <span style="color: #339933;">=</span> DISABLE<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">ResetOnMatch</span> <span style="color: #339933;">=</span> DISABLE<span style="color: #339933;">;</span>
	PWM_ConfigMatch<span style="color: #009900;">&#40;</span>LPC_PWM1<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>matcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	PWM_MatchUpdate<span style="color: #009900;">&#40;</span>LPC_PWM1<span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">255</span><span style="color: #339933;">,</span> PWM_MATCH_UPDATE_NEXT_RST<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	PWM_MatchUpdate<span style="color: #009900;">&#40;</span>LPC_PWM1<span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">16</span><span style="color: #339933;">,</span> PWM_MATCH_UPDATE_NEXT_RST<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   	PWM_MatchUpdate<span style="color: #009900;">&#40;</span>LPC_PWM1<span style="color: #339933;">,</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">64</span><span style="color: #339933;">,</span> PWM_MATCH_UPDATE_NEXT_RST<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//PWM_ChannelConfig(LPC_PWM1, 1, PWM_CHANNEL_SINGLE_EDGE);	//channel 1 don't need this and shouldn't use this.</span>
	PWM_ChannelConfig<span style="color: #009900;">&#40;</span>LPC_PWM1<span style="color: #339933;">,</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> PWM_CHANNEL_SINGLE_EDGE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	PWM_ChannelCmd<span style="color: #009900;">&#40;</span>LPC_PWM1<span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	PWM_ChannelCmd<span style="color: #009900;">&#40;</span>LPC_PWM1<span style="color: #339933;">,</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	PWM_Cmd<span style="color: #009900;">&#40;</span>LPC_PWM1<span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	PWM_CounterCmd<span style="color: #009900;">&#40;</span>LPC_PWM1<span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>


<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p167code16'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p16716"><td class="code" id="p167code16"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;lpc17xx.h&gt;</span>
<span style="color: #339933;">#include &quot;lpc17xx_libcfg.h&quot;</span>
<span style="color: #339933;">#include &lt;debug_frmwrk.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_nvic.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_rit.h&gt;</span>
<span style="color: #339933;">#include &lt;stdint.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_exti.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_pinsel.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_pwm.h&gt;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	PWM_TIMERCFG_Type timcfg<span style="color: #339933;">;</span>
	PWM_MATCHCFG_Type matcfg<span style="color: #339933;">;</span>
	PINSEL_CFG_Type pincfg<span style="color: #339933;">;</span>
&nbsp;
	debug_frmwrk_init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;PWM Test&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	pincfg.<span style="color: #202020;">Portnum</span> <span style="color: #339933;">=</span> PINSEL_PORT_2<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Pinnum</span> <span style="color: #339933;">=</span> PINSEL_PIN_0<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Funcnum</span> <span style="color: #339933;">=</span> PINSEL_FUNC_1<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Pinmode</span> <span style="color: #339933;">=</span> PINSEL_PINMODE_TRISTATE<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">OpenDrain</span> <span style="color: #339933;">=</span> PINSEL_PINMODE_NORMAL<span style="color: #339933;">;</span>
&nbsp;
	PINSEL_ConfigPin<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>pincfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	pincfg.<span style="color: #202020;">Pinnum</span> <span style="color: #339933;">=</span> PINSEL_PIN_1<span style="color: #339933;">;</span>
	PINSEL_ConfigPin<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>pincfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	pincfg.<span style="color: #202020;">Pinnum</span> <span style="color: #339933;">=</span> PINSEL_PIN_2<span style="color: #339933;">;</span>
	PINSEL_ConfigPin<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>pincfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	pincfg.<span style="color: #202020;">Pinnum</span> <span style="color: #339933;">=</span> PINSEL_PIN_3<span style="color: #339933;">;</span>
	PINSEL_ConfigPin<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>pincfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	timcfg.<span style="color: #202020;">PrescaleOption</span> <span style="color: #339933;">=</span> PWM_TIMER_PRESCALE_USVAL<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//TIM_PRESCALE_USVAL</span>
	timcfg.<span style="color: #202020;">PrescaleValue</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
	PWM_Init<span style="color: #009900;">&#40;</span>LPC_PWM1<span style="color: #339933;">,</span> PWM_MODE_TIMER<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>timcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	matcfg.<span style="color: #202020;">MatchChannel</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">IntOnMatch</span> <span style="color: #339933;">=</span> DISABLE<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">StopOnMatch</span> <span style="color: #339933;">=</span> DISABLE<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">ResetOnMatch</span> <span style="color: #339933;">=</span> ENABLE<span style="color: #339933;">;</span>
	PWM_ConfigMatch<span style="color: #009900;">&#40;</span>LPC_PWM1<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>matcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	matcfg.<span style="color: #202020;">MatchChannel</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">ResetOnMatch</span> <span style="color: #339933;">=</span> DISABLE<span style="color: #339933;">;</span>
	PWM_ConfigMatch<span style="color: #009900;">&#40;</span>LPC_PWM1<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>matcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	matcfg.<span style="color: #202020;">MatchChannel</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">ResetOnMatch</span> <span style="color: #339933;">=</span> DISABLE<span style="color: #339933;">;</span>
	PWM_ConfigMatch<span style="color: #009900;">&#40;</span>LPC_PWM1<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>matcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	matcfg.<span style="color: #202020;">MatchChannel</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">;</span>
	PWM_ConfigMatch<span style="color: #009900;">&#40;</span>LPC_PWM1<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>matcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	matcfg.<span style="color: #202020;">MatchChannel</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">4</span><span style="color: #339933;">;</span>
	PWM_ConfigMatch<span style="color: #009900;">&#40;</span>LPC_PWM1<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>matcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	PWM_MatchUpdate<span style="color: #009900;">&#40;</span>LPC_PWM1<span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">255</span><span style="color: #339933;">,</span> PWM_MATCH_UPDATE_NEXT_RST<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	PWM_MatchUpdate<span style="color: #009900;">&#40;</span>LPC_PWM1<span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">16</span><span style="color: #339933;">,</span> PWM_MATCH_UPDATE_NEXT_RST<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   	PWM_MatchUpdate<span style="color: #009900;">&#40;</span>LPC_PWM1<span style="color: #339933;">,</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">64</span><span style="color: #339933;">,</span> PWM_MATCH_UPDATE_NEXT_RST<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	PWM_MatchUpdate<span style="color: #009900;">&#40;</span>LPC_PWM1<span style="color: #339933;">,</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">32</span><span style="color: #339933;">,</span> PWM_MATCH_UPDATE_NEXT_RST<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   	PWM_MatchUpdate<span style="color: #009900;">&#40;</span>LPC_PWM1<span style="color: #339933;">,</span> <span style="color: #0000dd;">4</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">128</span><span style="color: #339933;">,</span> PWM_MATCH_UPDATE_NEXT_RST<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	PWM_ChannelConfig<span style="color: #009900;">&#40;</span>LPC_PWM1<span style="color: #339933;">,</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> PWM_CHANNEL_DUAL_EDGE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	PWM_ChannelConfig<span style="color: #009900;">&#40;</span>LPC_PWM1<span style="color: #339933;">,</span> <span style="color: #0000dd;">4</span><span style="color: #339933;">,</span> PWM_CHANNEL_DUAL_EDGE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	
	PWM_ChannelCmd<span style="color: #009900;">&#40;</span>LPC_PWM1<span style="color: #339933;">,</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	PWM_ChannelCmd<span style="color: #009900;">&#40;</span>LPC_PWM1<span style="color: #339933;">,</span> <span style="color: #0000dd;">4</span><span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	PWM_Cmd<span style="color: #009900;">&#40;</span>LPC_PWM1<span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	PWM_CounterCmd<span style="color: #009900;">&#40;</span>LPC_PWM1<span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.billwsy.com/2011/02/lpc17xx-pwm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>学习LPC17xx &#8211; SysTick和RIT</title>
		<link>http://www.billwsy.com/2011/02/lpc17xx-systick-rit/</link>
		<comments>http://www.billwsy.com/2011/02/lpc17xx-systick-rit/#comments</comments>
		<pubDate>Sat, 12 Feb 2011 07:37:46 +0000</pubDate>
		<dc:creator>BillWSY</dc:creator>
				<category><![CDATA[LPC17xx]]></category>

		<guid isPermaLink="false">http://www.billwsy.com/?p=165</guid>
		<description><![CDATA[SysTick是Cortex M3内置的定时器（而不是LPC1700系列特有的），通常用来做操作系统的时钟节拍。RIT是重复中断定时器，与SysTick类似，只是这是LPC1700特有的。下面是调试笔记和示例代码。



进入中断后一定要取消标志位。RIT_GetIntStatus(LPC_RIT)就是干这事的。

<span class="readmore"><a href="http://www.billwsy.com/2011/02/lpc17xx-systick-rit/" title="学习LPC17xx &#8211; SysTick和RIT">阅读全文——共786字</a></span>]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste">
<div>SysTick是Cortex M3内置的定时器（而不是LPC1700系列特有的），通常用来做操作系统的时钟节拍。RIT是重复中断定时器，与SysTick类似，只是这是LPC1700特有的。下面是调试笔记和示例代码。</div>
<ul>
<li>进入中断后一定要取消标志位。RIT_GetIntStatus(LPC_RIT)就是干这事的。</li>
<li>固件库中用到的RITx全部是LPC_RIT</li>
<li>RITENBR寄存器（调试的时候让定时器停下来）是指调试时按Stop。</li>
<li>在Watch窗口里面看寄存器要加”`”，就像”`RICOUNTER”。</li>
<li>所有寄存器都在Symbols窗口里面有。</li>
<li>功率控制默认是关闭的。</li>
<li>时钟可以PCLKSEL#寄存器中设置。</li>
</ul>
</div>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p165code18'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p16518"><td class="code" id="p165code18"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;lpc17xx.h&gt;</span>
<span style="color: #339933;">#include &quot;lpc17xx_libcfg.h&quot;</span>
<span style="color: #339933;">#include &lt;debug_frmwrk.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_nvic.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_systick.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_rit.h&gt;</span>
&nbsp;
<span style="color: #993333;">void</span> SysTick_Handler<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">static</span> uint32_t t<span style="color: #339933;">;</span>
	<span style="color: #339933;">++</span> t<span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #009900;">&#40;</span>t <span style="color: #339933;">%</span> <span style="color: #0000dd;">10</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
		_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;SysTick IRQ&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> RIT_IRQHandler<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	RIT_GetIntStatus<span style="color: #009900;">&#40;</span>LPC_RIT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;RIT IRQ&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	debug_frmwrk_init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	
&nbsp;
	SYSTICK_InternalInit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//the maximum value should not exceed the 24 bit systick counter</span>
	SYSTICK_Cmd<span style="color: #009900;">&#40;</span>ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	SYSTICK_IntCmd<span style="color: #009900;">&#40;</span>ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	RIT_Init<span style="color: #009900;">&#40;</span>LPC_RIT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	RIT_TimerConfig<span style="color: #009900;">&#40;</span>LPC_RIT<span style="color: #339933;">,</span> <span style="color: #0000dd;">500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//100ms</span>
	RIT_TimerDebugCmd<span style="color: #009900;">&#40;</span>LPC_RIT<span style="color: #339933;">,</span> DISABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	NVIC_EnableIRQ<span style="color: #009900;">&#40;</span>RIT_IRQn<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.billwsy.com/2011/02/lpc17xx-systick-rit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>学习LPC17xx &#8211; 定时器</title>
		<link>http://www.billwsy.com/2011/02/lpc17xx-timer/</link>
		<comments>http://www.billwsy.com/2011/02/lpc17xx-timer/#comments</comments>
		<pubDate>Sat, 12 Feb 2011 05:26:08 +0000</pubDate>
		<dc:creator>BillWSY</dc:creator>
				<category><![CDATA[LPC17xx]]></category>

		<guid isPermaLink="false">http://www.billwsy.com/?p=163</guid>
		<description><![CDATA[定时器部分的固件库有Bug，具体为作为计数器模式的时候固件库工作不正常，检查代码后发现有几处错误，此问题已反馈给NXP。





<span class="readmore"><a href="http://www.billwsy.com/2011/02/lpc17xx-timer/" title="学习LPC17xx &#8211; 定时器">阅读全文——共6053字</a></span>]]></description>
			<content:encoded><![CDATA[<p>定时器部分的固件库有Bug，具体为作为计数器模式的时候固件库工作不正常，检查代码后发现有几处错误，此问题已反馈给NXP。</p>
<div id="_mcePaste">
<ul>
<li>PCLK默认是CCLK四分频，固件库初始化时会修改为四分频，所以需要改变PCLK的分频应当在用固件库初始化之后。</li>
<li>这里的GetIntStatus是不会清空挂起位的。这与RIT不同。</li>
<li>固件库对Counter模式有很多错误，固件库手册描述不清等。</li>
<li>固件库中[320行附近]：CCR和CTCR混淆，TIM_TIMER_MODE应为TimerCounterMode。</li>
<li>TIM_COUNTERCFG_Type的说明在另外一处，Init函数接受的第三个参数为void*，具体类型通过第二个参数选择。TIM_COUNTERCFG_Type说明处有错误。事实上第一个元素没用到，第二个参数的描述应为第一个参数。</li>
<li>固件库中[344行附近]：CCR和CTCR混淆。</li>
<li>头文件[142行附近]还有对参数检查的错误，把计数器模式的下降沿和任意边沿都写成了上升沿。</li>
<li>固件库中应该还有错误，比如GetIntStatus和GetIntCaptureStatus函数。</li>
<li>要记得引脚选择。</li>
<li>有空要调试好固件库。</li>
</ul>
</div>
<p>以下代码分别为使用定时器0和2、捕获输入、计数器模式（需要修改固件库）。<br />
<span id="more-163"></span></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p163code22'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p16322"><td class="code" id="p163code22"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;lpc17xx.h&gt;</span>
<span style="color: #339933;">#include &quot;lpc17xx_libcfg.h&quot;</span>
<span style="color: #339933;">#include &lt;debug_frmwrk.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_nvic.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_rit.h&gt;</span>
<span style="color: #339933;">#include &lt;stdint.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_exti.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_pinsel.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_timer.h&gt;</span>
&nbsp;
<span style="color: #993333;">void</span> TIMER0_IRQHandler<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>TIM_GetIntStatus<span style="color: #009900;">&#40;</span>LPC_TIM0<span style="color: #339933;">,</span> TIM_MR0_INT<span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> SET<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		TIM_ClearIntPending<span style="color: #009900;">&#40;</span>LPC_TIM0<span style="color: #339933;">,</span> TIM_MR0_INT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;IRQ00&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
		TIM_ClearIntPending<span style="color: #009900;">&#40;</span>LPC_TIM0<span style="color: #339933;">,</span> TIM_MR1_INT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;IRQ01&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>	 
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> TIMER2_IRQHandler<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>TIM_GetIntStatus<span style="color: #009900;">&#40;</span>LPC_TIM2<span style="color: #339933;">,</span> TIM_MR0_INT<span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> SET<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		TIM_ClearIntPending<span style="color: #009900;">&#40;</span>LPC_TIM2<span style="color: #339933;">,</span> TIM_MR0_INT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;IRQ20&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
		TIM_ClearIntPending<span style="color: #009900;">&#40;</span>LPC_TIM2<span style="color: #339933;">,</span> TIM_MR1_INT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;IRQ21&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>	 
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	TIM_TIMERCFG_Type timcfg<span style="color: #339933;">;</span>
	TIM_MATCHCFG_Type matcfg<span style="color: #339933;">;</span>
	debug_frmwrk_init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Timer Test&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	timcfg.<span style="color: #202020;">PrescaleOption</span> <span style="color: #339933;">=</span> TIM_PRESCALE_USVAL<span style="color: #339933;">;</span>
	timcfg.<span style="color: #202020;">PrescaleValue</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1000</span><span style="color: #339933;">;</span>
	TIM_Init<span style="color: #009900;">&#40;</span>LPC_TIM0<span style="color: #339933;">,</span> TIM_TIMER_MODE<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>timcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	timcfg.<span style="color: #202020;">PrescaleOption</span> <span style="color: #339933;">=</span> TIM_PRESCALE_USVAL<span style="color: #339933;">;</span>
	timcfg.<span style="color: #202020;">PrescaleValue</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">500</span><span style="color: #339933;">;</span>
	TIM_Init<span style="color: #009900;">&#40;</span>LPC_TIM2<span style="color: #339933;">,</span> TIM_TIMER_MODE<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>timcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	matcfg.<span style="color: #202020;">MatchChannel</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">IntOnMatch</span> <span style="color: #339933;">=</span> ENABLE<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">StopOnMatch</span> <span style="color: #339933;">=</span> DISABLE<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">ResetOnMatch</span> <span style="color: #339933;">=</span> DISABLE<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">ExtMatchOutputType</span> <span style="color: #339933;">=</span> TIM_EXTMATCH_NOTHING<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">MatchValue</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">500</span><span style="color: #339933;">;</span>
	TIM_ConfigMatch<span style="color: #009900;">&#40;</span>LPC_TIM0<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>matcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	matcfg.<span style="color: #202020;">MatchChannel</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">MatchValue</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1000</span><span style="color: #339933;">;</span>
	TIM_ConfigMatch<span style="color: #009900;">&#40;</span>LPC_TIM0<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>matcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	matcfg.<span style="color: #202020;">MatchChannel</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">MatchValue</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">2000</span><span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">IntOnMatch</span> <span style="color: #339933;">=</span> DISABLE<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">ResetOnMatch</span> <span style="color: #339933;">=</span> ENABLE<span style="color: #339933;">;</span>
	TIM_ConfigMatch<span style="color: #009900;">&#40;</span>LPC_TIM0<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>matcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	matcfg.<span style="color: #202020;">MatchChannel</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">IntOnMatch</span> <span style="color: #339933;">=</span> ENABLE<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">StopOnMatch</span> <span style="color: #339933;">=</span> DISABLE<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">ResetOnMatch</span> <span style="color: #339933;">=</span> DISABLE<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">ExtMatchOutputType</span> <span style="color: #339933;">=</span> TIM_EXTMATCH_NOTHING<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">MatchValue</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">500</span><span style="color: #339933;">;</span>
	TIM_ConfigMatch<span style="color: #009900;">&#40;</span>LPC_TIM2<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>matcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	matcfg.<span style="color: #202020;">MatchChannel</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">MatchValue</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1000</span><span style="color: #339933;">;</span>
	TIM_ConfigMatch<span style="color: #009900;">&#40;</span>LPC_TIM2<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>matcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	matcfg.<span style="color: #202020;">MatchChannel</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">MatchValue</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">2000</span><span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">IntOnMatch</span> <span style="color: #339933;">=</span> DISABLE<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">ResetOnMatch</span> <span style="color: #339933;">=</span> ENABLE<span style="color: #339933;">;</span>
	TIM_ConfigMatch<span style="color: #009900;">&#40;</span>LPC_TIM2<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>matcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	TIM_Cmd<span style="color: #009900;">&#40;</span>LPC_TIM0<span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	TIM_Cmd<span style="color: #009900;">&#40;</span>LPC_TIM2<span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	NVIC_EnableIRQ<span style="color: #009900;">&#40;</span>TIMER0_IRQn<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	NVIC_EnableIRQ<span style="color: #009900;">&#40;</span>TIMER2_IRQn<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>


<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p163code23'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p16323"><td class="code" id="p163code23"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;lpc17xx.h&gt;</span>
<span style="color: #339933;">#include &quot;lpc17xx_libcfg.h&quot;</span>
<span style="color: #339933;">#include &lt;debug_frmwrk.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_nvic.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_rit.h&gt;</span>
<span style="color: #339933;">#include &lt;stdint.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_exti.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_pinsel.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_timer.h&gt;</span>
<span style="color: #666666; font-style: italic;">//#include &lt;core_cm3.h&gt;</span>
&nbsp;
<span style="color: #993333;">void</span> TIMER0_IRQHandler<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>TIM_GetIntStatus<span style="color: #009900;">&#40;</span>LPC_TIM0<span style="color: #339933;">,</span> TIM_MR0_INT<span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> SET<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		TIM_ClearIntPending<span style="color: #009900;">&#40;</span>LPC_TIM0<span style="color: #339933;">,</span> TIM_MR0_INT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;IRQ00&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
		TIM_ClearIntPending<span style="color: #009900;">&#40;</span>LPC_TIM0<span style="color: #339933;">,</span> TIM_MR1_INT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;IRQ01&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>	 
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> TIMER2_IRQHandler<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	_DBD32<span style="color: #009900;">&#40;</span>TIM_GetCaptureValue<span style="color: #009900;">&#40;</span>LPC_TIM0<span style="color: #339933;">,</span> TIM_COUNTER_INCAP0<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>TIM_GetIntStatus<span style="color: #009900;">&#40;</span>LPC_TIM2<span style="color: #339933;">,</span> TIM_MR0_INT<span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> SET<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		TIM_ClearIntPending<span style="color: #009900;">&#40;</span>LPC_TIM2<span style="color: #339933;">,</span> TIM_MR0_INT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;IRQ20&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
		TIM_ClearIntPending<span style="color: #009900;">&#40;</span>LPC_TIM2<span style="color: #339933;">,</span> TIM_MR1_INT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;IRQ21&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>	 
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	TIM_TIMERCFG_Type timcfg<span style="color: #339933;">;</span>
	TIM_MATCHCFG_Type matcfg<span style="color: #339933;">;</span>
	TIM_CAPTURECFG_Type capcfg<span style="color: #339933;">;</span>
&nbsp;
	PINSEL_CFG_Type pincfg<span style="color: #339933;">;</span>
&nbsp;
	pincfg.<span style="color: #202020;">Portnum</span> <span style="color: #339933;">=</span> PINSEL_PORT_1<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Pinnum</span> <span style="color: #339933;">=</span> PINSEL_PIN_26<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Pinmode</span> <span style="color: #339933;">=</span> PINSEL_PINMODE_PULLUP<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">OpenDrain</span> <span style="color: #339933;">=</span> PINSEL_PINMODE_NORMAL<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Funcnum</span> <span style="color: #339933;">=</span> PINSEL_FUNC_3<span style="color: #339933;">;</span>
&nbsp;
	PINSEL_ConfigPin<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>pincfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	debug_frmwrk_init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Timer Test&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	timcfg.<span style="color: #202020;">PrescaleOption</span> <span style="color: #339933;">=</span> TIM_PRESCALE_USVAL<span style="color: #339933;">;</span>
	timcfg.<span style="color: #202020;">PrescaleValue</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1000</span><span style="color: #339933;">;</span>
	TIM_Init<span style="color: #009900;">&#40;</span>LPC_TIM0<span style="color: #339933;">,</span> TIM_TIMER_MODE<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>timcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	timcfg.<span style="color: #202020;">PrescaleOption</span> <span style="color: #339933;">=</span> TIM_PRESCALE_USVAL<span style="color: #339933;">;</span>
	timcfg.<span style="color: #202020;">PrescaleValue</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">500</span><span style="color: #339933;">;</span>
	TIM_Init<span style="color: #009900;">&#40;</span>LPC_TIM2<span style="color: #339933;">,</span> TIM_TIMER_MODE<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>timcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	matcfg.<span style="color: #202020;">MatchChannel</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">IntOnMatch</span> <span style="color: #339933;">=</span> ENABLE<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">StopOnMatch</span> <span style="color: #339933;">=</span> DISABLE<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">ResetOnMatch</span> <span style="color: #339933;">=</span> DISABLE<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">ExtMatchOutputType</span> <span style="color: #339933;">=</span> TIM_EXTMATCH_NOTHING<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">MatchValue</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">500</span><span style="color: #339933;">;</span>
	TIM_ConfigMatch<span style="color: #009900;">&#40;</span>LPC_TIM0<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>matcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	matcfg.<span style="color: #202020;">MatchChannel</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">MatchValue</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1000</span><span style="color: #339933;">;</span>
	TIM_ConfigMatch<span style="color: #009900;">&#40;</span>LPC_TIM0<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>matcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	matcfg.<span style="color: #202020;">MatchChannel</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">MatchValue</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">2000</span><span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">IntOnMatch</span> <span style="color: #339933;">=</span> DISABLE<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">ResetOnMatch</span> <span style="color: #339933;">=</span> ENABLE<span style="color: #339933;">;</span>
	TIM_ConfigMatch<span style="color: #009900;">&#40;</span>LPC_TIM0<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>matcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	matcfg.<span style="color: #202020;">MatchChannel</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">IntOnMatch</span> <span style="color: #339933;">=</span> ENABLE<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">StopOnMatch</span> <span style="color: #339933;">=</span> DISABLE<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">ResetOnMatch</span> <span style="color: #339933;">=</span> DISABLE<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">ExtMatchOutputType</span> <span style="color: #339933;">=</span> TIM_EXTMATCH_NOTHING<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">MatchValue</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">500</span><span style="color: #339933;">;</span>
	TIM_ConfigMatch<span style="color: #009900;">&#40;</span>LPC_TIM2<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>matcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	matcfg.<span style="color: #202020;">MatchChannel</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">MatchValue</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1000</span><span style="color: #339933;">;</span>
	TIM_ConfigMatch<span style="color: #009900;">&#40;</span>LPC_TIM2<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>matcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	matcfg.<span style="color: #202020;">MatchChannel</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">MatchValue</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">2000</span><span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">IntOnMatch</span> <span style="color: #339933;">=</span> DISABLE<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">ResetOnMatch</span> <span style="color: #339933;">=</span> ENABLE<span style="color: #339933;">;</span>
	TIM_ConfigMatch<span style="color: #009900;">&#40;</span>LPC_TIM2<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>matcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	capcfg.<span style="color: #202020;">CaptureChannel</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	capcfg.<span style="color: #202020;">RisingEdge</span> <span style="color: #339933;">=</span> DISABLE<span style="color: #339933;">;</span>
	capcfg.<span style="color: #202020;">FallingEdge</span> <span style="color: #339933;">=</span> ENABLE<span style="color: #339933;">;</span>
	capcfg.<span style="color: #202020;">IntOnCaption</span> <span style="color: #339933;">=</span> ENABLE<span style="color: #339933;">;</span>
&nbsp;
	TIM_ConfigCapture<span style="color: #009900;">&#40;</span>LPC_TIM0<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>capcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	TIM_Cmd<span style="color: #009900;">&#40;</span>LPC_TIM0<span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	TIM_Cmd<span style="color: #009900;">&#40;</span>LPC_TIM2<span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	NVIC_EnableIRQ<span style="color: #009900;">&#40;</span>TIMER0_IRQn<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	NVIC_EnableIRQ<span style="color: #009900;">&#40;</span>TIMER2_IRQn<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>


<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p163code24'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p16324"><td class="code" id="p163code24"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;lpc17xx.h&gt;</span>
<span style="color: #339933;">#include &quot;lpc17xx_libcfg.h&quot;</span>
<span style="color: #339933;">#include &lt;debug_frmwrk.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_nvic.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_rit.h&gt;</span>
<span style="color: #339933;">#include &lt;stdint.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_exti.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_pinsel.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_timer.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_clkpwr.h&gt;</span>
&nbsp;
<span style="color: #993333;">void</span> TIMER2_IRQHandler<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	_DBD32<span style="color: #009900;">&#40;</span>LPC_TIM0 <span style="color: #339933;">-&gt;</span> TC<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>TIM_GetIntStatus<span style="color: #009900;">&#40;</span>LPC_TIM2<span style="color: #339933;">,</span> TIM_MR0_INT<span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> SET<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		TIM_ClearIntPending<span style="color: #009900;">&#40;</span>LPC_TIM2<span style="color: #339933;">,</span> TIM_MR0_INT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;IRQ20&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
		TIM_ClearIntPending<span style="color: #009900;">&#40;</span>LPC_TIM2<span style="color: #339933;">,</span> TIM_MR1_INT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;IRQ21&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>	 
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	TIM_TIMERCFG_Type timcfg<span style="color: #339933;">;</span>
	TIM_MATCHCFG_Type matcfg<span style="color: #339933;">;</span>
&nbsp;
	TIM_COUNTERCFG_Type cntcfg<span style="color: #339933;">;</span>
&nbsp;
	PINSEL_CFG_Type pincfg<span style="color: #339933;">;</span>
&nbsp;
	pincfg.<span style="color: #202020;">Portnum</span> <span style="color: #339933;">=</span> PINSEL_PORT_1<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Pinnum</span> <span style="color: #339933;">=</span> PINSEL_PIN_26<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Pinmode</span> <span style="color: #339933;">=</span> PINSEL_PINMODE_PULLUP<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">OpenDrain</span> <span style="color: #339933;">=</span> PINSEL_PINMODE_NORMAL<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Funcnum</span> <span style="color: #339933;">=</span> PINSEL_FUNC_3<span style="color: #339933;">;</span>
&nbsp;
	PINSEL_ConfigPin<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>pincfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	debug_frmwrk_init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Timer Test&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
&nbsp;
	cntcfg.<span style="color: #202020;">CounterOption</span> <span style="color: #339933;">=</span> TIM_COUNTER_INCAP0<span style="color: #339933;">;</span>
	cntcfg.<span style="color: #202020;">CountInputSelect</span> <span style="color: #339933;">=</span> TIM_COUNTER_INCAP0<span style="color: #339933;">;</span>
&nbsp;
	TIM_Init<span style="color: #009900;">&#40;</span>LPC_TIM0<span style="color: #339933;">,</span> TIM_COUNTER_FALLING_MODE<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>cntcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	timcfg.<span style="color: #202020;">PrescaleOption</span> <span style="color: #339933;">=</span> TIM_PRESCALE_USVAL<span style="color: #339933;">;</span>
	timcfg.<span style="color: #202020;">PrescaleValue</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">500</span><span style="color: #339933;">;</span>
	TIM_Init<span style="color: #009900;">&#40;</span>LPC_TIM2<span style="color: #339933;">,</span> TIM_TIMER_MODE<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>timcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	matcfg.<span style="color: #202020;">MatchChannel</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">IntOnMatch</span> <span style="color: #339933;">=</span> ENABLE<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">StopOnMatch</span> <span style="color: #339933;">=</span> DISABLE<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">ResetOnMatch</span> <span style="color: #339933;">=</span> DISABLE<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">ExtMatchOutputType</span> <span style="color: #339933;">=</span> TIM_EXTMATCH_NOTHING<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">MatchValue</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">500</span><span style="color: #339933;">;</span>
	TIM_ConfigMatch<span style="color: #009900;">&#40;</span>LPC_TIM2<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>matcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	matcfg.<span style="color: #202020;">MatchChannel</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">MatchValue</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1000</span><span style="color: #339933;">;</span>
	TIM_ConfigMatch<span style="color: #009900;">&#40;</span>LPC_TIM2<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>matcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	matcfg.<span style="color: #202020;">MatchChannel</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">MatchValue</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">2000</span><span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">IntOnMatch</span> <span style="color: #339933;">=</span> DISABLE<span style="color: #339933;">;</span>
	matcfg.<span style="color: #202020;">ResetOnMatch</span> <span style="color: #339933;">=</span> ENABLE<span style="color: #339933;">;</span>
	TIM_ConfigMatch<span style="color: #009900;">&#40;</span>LPC_TIM2<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>matcfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	TIM_Cmd<span style="color: #009900;">&#40;</span>LPC_TIM0<span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	TIM_Cmd<span style="color: #009900;">&#40;</span>LPC_TIM2<span style="color: #339933;">,</span> ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	NVIC_EnableIRQ<span style="color: #009900;">&#40;</span>TIMER0_IRQn<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	NVIC_EnableIRQ<span style="color: #009900;">&#40;</span>TIMER2_IRQn<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	CLKPWR_SetPCLKDiv<span style="color: #009900;">&#40;</span>CLKPWR_PCLKSEL_TIMER0<span style="color: #339933;">,</span> CLKPWR_PCLKSEL_CCLK_DIV_1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	CLKPWR_SetPCLKDiv<span style="color: #009900;">&#40;</span>CLKPWR_PCLKSEL_TIMER2<span style="color: #339933;">,</span> CLKPWR_PCLKSEL_CCLK_DIV_4<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.billwsy.com/2011/02/lpc17xx-timer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>学习LPC17xx &#8211; GPIO和EXTI</title>
		<link>http://www.billwsy.com/2011/02/lpc17xx-gpio-ext/</link>
		<comments>http://www.billwsy.com/2011/02/lpc17xx-gpio-ext/#comments</comments>
		<pubDate>Sat, 12 Feb 2011 04:02:22 +0000</pubDate>
		<dc:creator>BillWSY</dc:creator>
				<category><![CDATA[LPC17xx]]></category>

		<guid isPermaLink="false">http://www.billwsy.com/?p=153</guid>
		<description><![CDATA[以下是GPIO和EXTI的调试笔记：



所有引脚使用前必须初始化（一般来说GPIO除外）。包括EXTI。

<span class="readmore"><a href="http://www.billwsy.com/2011/02/lpc17xx-gpio-ext/" title="学习LPC17xx &#8211; GPIO和EXTI">阅读全文——共3141字</a></span>]]></description>
			<content:encoded><![CDATA[<p>以下是GPIO和EXTI的调试笔记：</p>
<ul>
<li>所有引脚使用前必须初始化（一般来说GPIO除外）。包括EXTI。</li>
<li>GPIO需要设置方向、输出等。通过SetValue和ClearValue就可以了。FIO打头的函数貌似是为了兼容以前的。</li>
<li>EINT0是通过PINSEL使能的，PCONP中没有对应位。</li>
<li>NVIC的控制是在core_cm3.h中定义的。SysTick既有LPC17xx的驱动库，也在CMSIS中就有定义。</li>
<li>中断使用前要通过NVIC使能中断。</li>
<li>进入中断后要清除中断标志位。</li>
<li>中断后Pending位自动清零（当中断变为Active后），但标志位不会。</li>
<li>SysTick的溢出时间不能超过24位寄存器。</li>
<li>即使没有使能NVIC中对应的中断，当其触发时，仍然会变成Pending。</li>
<li>SysTick不能用NVIC控制。</li>
<li>注意看手册，GPIO中断一次是设置一批的。</li>
<li>消抖：群里有人说不要用外部中断。进入中断后判断端口的电平。计数，到一定阈值以上才算真正触发。（但是这种办法在外部中断(EINT/EXTI)中可能无法实现）</li>
<li>SysTick的时钟固定为CCLK。</li>
</ul>
<p><span id="more-153"></span></p>
<p>以下是代码：流水灯，分别是EXTI中断和GPIO中断触发最后一盏灯的例子，原理图参见“路虎开发板”，还有一张我用示波器看到的毛刺信号的图</p>
<p><code></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p153code27'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p15327"><td class="code" id="p153code27"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;lpc17xx.h&gt;</span>
<span style="color: #339933;">#include &quot;lpc17xx_libcfg.h&quot;</span>
<span style="color: #339933;">#include &lt;debug_frmwrk.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_gpio.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_nvic.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_systick.h&gt;</span>
<span style="color: #339933;">#include &lt;stdint.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_exti.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_pinsel.h&gt;</span>
&nbsp;
<span style="color: #993333;">volatile</span> uint8_t led7<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">volatile</span> uint32_t SysTickCnt<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">void</span> EINT0_IRQHandler<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>	<span style="color: #666666; font-style: italic;">//IRQ Handler</span>
<span style="color: #009900;">&#123;</span>
	uint32_t prv <span style="color: #339933;">=</span> SysTickCnt<span style="color: #339933;">;</span>
	_DBD32<span style="color: #009900;">&#40;</span>NVIC_GetPendingIRQ<span style="color: #009900;">&#40;</span>EINT0_IRQn<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	EXTI_ClearEXTIFlag<span style="color: #009900;">&#40;</span>EXTI_EINT0<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;In&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span>SysTickCnt <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> prv <span style="color: #339933;">+</span> <span style="color: #0000dd;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	led7 <span style="color: #339933;">=</span> led7 <span style="color: #339933;">?</span> <span style="color: #0000dd;">0</span> <span style="color: #339933;">:</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>led7<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		GPIO_SetValue<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #0000dd;">7</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
		GPIO_ClearValue<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #0000dd;">7</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Out&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> SysTick_Handler<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	SysTickCnt<span style="color: #339933;">++;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	uint32_t prv<span style="color: #339933;">;</span>
	uint8_t i<span style="color: #339933;">;</span>
	EXTI_InitTypeDef exticfg<span style="color: #339933;">;</span>
	PINSEL_CFG_Type extipincfg<span style="color: #339933;">;</span>
	debug_frmwrk_init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;A GPIO Test&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	GPIO_SetDir<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x000000FF</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	SYSTICK_InternalInit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//the maximum value should not exceed the 24 bit systick counter</span>
	SYSTICK_Cmd<span style="color: #009900;">&#40;</span>ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	SYSTICK_IntCmd<span style="color: #009900;">&#40;</span>ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	exticfg.<span style="color: #202020;">EXTI_Line</span> <span style="color: #339933;">=</span> EXTI_EINT0<span style="color: #339933;">;</span>
	exticfg.<span style="color: #202020;">EXTI_Mode</span> <span style="color: #339933;">=</span> EXTI_MODE_EDGE_SENSITIVE<span style="color: #339933;">;</span>
	exticfg.<span style="color: #202020;">EXTI_polarity</span> <span style="color: #339933;">=</span> EXTI_POLARITY_LOW_ACTIVE_OR_FALLING_EDGE<span style="color: #339933;">;</span>
&nbsp;
	extipincfg.<span style="color: #202020;">Portnum</span> <span style="color: #339933;">=</span> PINSEL_PORT_2<span style="color: #339933;">;</span>
	extipincfg.<span style="color: #202020;">Pinnum</span> <span style="color: #339933;">=</span> PINSEL_PIN_10<span style="color: #339933;">;</span>
	extipincfg.<span style="color: #202020;">Funcnum</span> <span style="color: #339933;">=</span> PINSEL_FUNC_1<span style="color: #339933;">;</span>
	extipincfg.<span style="color: #202020;">Pinmode</span> <span style="color: #339933;">=</span> PINSEL_PINMODE_PULLUP<span style="color: #339933;">;</span>
	extipincfg.<span style="color: #202020;">OpenDrain</span> <span style="color: #339933;">=</span> PINSEL_PINMODE_NORMAL<span style="color: #339933;">;</span>
&nbsp;
	PINSEL_ConfigPin<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>extipincfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		   <span style="color: #666666; font-style: italic;">//select EINT0 pin function</span>
	EXTI_Config<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>exticfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>				   <span style="color: #666666; font-style: italic;">//config EINT0</span>
&nbsp;
	NVIC_SetPriority<span style="color: #009900;">&#40;</span>SysTick_IRQn<span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	   <span style="color: #666666; font-style: italic;">//SysTick prior than EINT0</span>
	NVIC_SetPriority<span style="color: #009900;">&#40;</span>EINT0_IRQn<span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	NVIC_EnableIRQ<span style="color: #009900;">&#40;</span>EINT0_IRQn<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>			   <span style="color: #666666; font-style: italic;">//Enable EINT0</span>
&nbsp;
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;=</span> <span style="color: #0000dd;">6</span><span style="color: #339933;">;</span> <span style="color: #339933;">++</span> i<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			GPIO_SetValue<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;</span> i<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	   <span style="color: #666666; font-style: italic;">//on led</span>
			prv <span style="color: #339933;">=</span> SysTickCnt<span style="color: #339933;">;</span>
			<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span>SysTickCnt <span style="color: #339933;">-</span> prv <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #0000dd;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">//delay 10 units (10 * 10ms)</span>
			GPIO_ClearValue<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;</span> i<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	   <span style="color: #666666; font-style: italic;">//off led</span>
		<span style="color: #009900;">&#125;</span>
		NVIC_SetPendingIRQ<span style="color: #009900;">&#40;</span>EINT0_IRQn<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	   <span style="color: #666666; font-style: italic;">//force trigger an EINT0 IRQ (in NVIC)</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p></code><br />
<code></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p153code28'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p15328"><td class="code" id="p153code28"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;lpc17xx.h&gt;</span>
<span style="color: #339933;">#include &quot;lpc17xx_libcfg.h&quot;</span>
<span style="color: #339933;">#include &lt;debug_frmwrk.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_gpio.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_nvic.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_systick.h&gt;</span>
<span style="color: #339933;">#include &lt;stdint.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_exti.h&gt;</span>
<span style="color: #339933;">#include &lt;lpc17xx_pinsel.h&gt;</span>
&nbsp;
<span style="color: #993333;">volatile</span> uint8_t led7<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">volatile</span> uint32_t SysTickCnt<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">void</span> EINT3_IRQHandler<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	uint32_t i<span style="color: #339933;">,</span> cnt <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Int Triggered&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	GPIO_ClearInt<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #0000dd;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #0000dd;">100</span><span style="color: #339933;">;</span> <span style="color: #339933;">++</span> i<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>GPIO_ReadValue<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #0000dd;">10</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">++</span> cnt<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>cnt <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #0000dd;">95</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">return</span><span style="color: #339933;">;</span>
	_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Int Confirmed&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBD32<span style="color: #009900;">&#40;</span>cnt<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> _DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	led7 <span style="color: #339933;">=</span> led7 <span style="color: #339933;">?</span> <span style="color: #0000dd;">0</span> <span style="color: #339933;">:</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>led7<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		GPIO_SetValue<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #0000dd;">7</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
		GPIO_ClearValue<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #0000dd;">7</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> SysTick_Handler<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	SysTickCnt<span style="color: #339933;">++;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	uint32_t prv<span style="color: #339933;">;</span>
	uint8_t i<span style="color: #339933;">;</span>
	PINSEL_CFG_Type pincfg<span style="color: #339933;">;</span>
	debug_frmwrk_init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	_DBG_<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;A GPIO Test&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	GPIO_SetDir<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x000000FF</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	GPIO_SetDir<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #0000dd;">11</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	SYSTICK_InternalInit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//the maximum value should not exceed the 24 bit systick counter</span>
	SYSTICK_Cmd<span style="color: #009900;">&#40;</span>ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	SYSTICK_IntCmd<span style="color: #009900;">&#40;</span>ENABLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   	GPIO_IntCmd<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #0000dd;">10</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	pincfg.<span style="color: #202020;">Portnum</span> <span style="color: #339933;">=</span> PINSEL_PORT_2<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Pinnum</span> <span style="color: #339933;">=</span> PINSEL_PIN_10<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Funcnum</span> <span style="color: #339933;">=</span> PINSEL_FUNC_0<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">Pinmode</span> <span style="color: #339933;">=</span> PINSEL_PINMODE_PULLUP<span style="color: #339933;">;</span>
	pincfg.<span style="color: #202020;">OpenDrain</span> <span style="color: #339933;">=</span> PINSEL_PINMODE_NORMAL<span style="color: #339933;">;</span>
&nbsp;
	PINSEL_ConfigPin<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>pincfg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	NVIC_SetPriority<span style="color: #009900;">&#40;</span>SysTick_IRQn<span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	NVIC_SetPriority<span style="color: #009900;">&#40;</span>EINT3_IRQn<span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	NVIC_EnableIRQ<span style="color: #009900;">&#40;</span>EINT3_IRQn<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;=</span> <span style="color: #0000dd;">6</span><span style="color: #339933;">;</span> <span style="color: #339933;">++</span> i<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			GPIO_SetValue<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;</span> i<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			prv <span style="color: #339933;">=</span> SysTickCnt<span style="color: #339933;">;</span>
			<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span>SysTickCnt <span style="color: #339933;">-</span> prv <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #0000dd;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			GPIO_ClearValue<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;</span> i<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p></code><br />
<a href="http://www.billwsy.com/wp-content/uploads/2011/02/maoci.png"><img src="http://www.billwsy.com/wp-content/uploads/2011/02/maoci.png" alt="" title="毛刺" width="320" height="234" class="alignnone size-full wp-image-161" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.billwsy.com/2011/02/lpc17xx-gpio-ext/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

