一个LED的N种玩法 (一)
Author: chenzhufly
Email: chenzhufly@126.com
2010-4-27
NXP的LPC1343板载资源真的很少,仅仅只有一个LED接在 P0_7上。需要说明的是LPC1343其他的管脚都已经引出,很容易扩展,如果谁有兴趣的话可以做做。虽然我工具齐全,但是我是个懒人,呵呵,我不想动烙铁,不想焊接,不想扩展……那该怎么办呢,我在思考……
想了很久,决定就先玩玩这个LED吧,哈哈。就如同所有的程序语言入门,第一个例程都是hello world一样,我也从LED开始。
在《LPCXpresso LPC1343 入门教程》我已经写过如何建立个简单的工程这里就不赘述了,那个里面的blinky例程,使用TIMER来实现的,在我的第一篇里面显的还是很高级的,所以暂且不表。
我想讨论的是LED该怎么玩,欢迎大家加入讨论!
我是这样理解的,主要是让它闪起来,这样比较直观容易看见效果,所以就牵着到了两个问题:
1) 如何闪烁
2) 怎么实现
我主要针对这两个问题,展开讨论,如果您有什么好的建议,请联系我,非常感谢!
首先我把blinky例程改成这样:
int delay(int count)
{
while(count--);
return 0;
}
int main(void) {
GPIOInit();
GPIOSetDir(LED_PORT, LED_BIT, 1);
while (1)
{
GPIOSetValue(LED_PORT, LED_BIT, LED_OFF );
delay(1000000);
GPIOSetValue(LED_PORT, LED_BIT, LED_ON );
delay(1000000);
}
}
简单吧,所以也没什么好解释的;只是把IO置1或者0然后延时一段时间,这样就达到了闪烁的目的。
这个例程我本来是想谈谈delay函数的实现问题,这将牵扯到代码优化方面的东西。我没发现LPCXpresso怎么打开反汇编的操作,所以没法做比较,就不好说了,我提两个问题吧
1) 用for 和 while都可以实现延时,那个效率高?那个占用资源少呢?
2) 可以用递增的方式或者递减的方式来实现延时,同样的那个效率高?那个占用资源少呢?
比如:for(i=0;i<count;i++) 和 for(i=count;i>0;i--)
谁知道怎么打开反汇编,麻烦告诉我一下,谢啦!
第一篇就写到这里吧,目的已经达到,小灯闪起来了,哈哈!,附测试程序
blinky_01.zip
(200.48 KB, 下载次数: 127)
一个LED的N种玩法 (一).pdf
(101.99 KB, 下载次数: 149)