ARM7的学习以荷兰Philips的ARM芯片LPC系列为代表(该部门已被NXP收购),嵌入式在中国的发展,特别是ARM7的普及离不开广州周立功的功劳,从2002年开始他主推LPC系列ARM芯片,并发展大学计划,可谓是中国大陆的一只“凌阳”。
本文以LPC2136为例进行讲解。
一、认识LPC2136开发板实物图
二、认识LPC2136开发板原理图
三、第一个程序:跑马灯的实现原理
通过LED灯实验熟悉lpc arm系列soc的控制原理。
以lpc2136为例(lpc2103,lpc2114,lpc2104,lpc2106同)
1: 搞清楚板子上的led连在CPU的哪个引脚
很多板子是通过跳线帽连起来的,需要注意!!!这里,led1,led2,led3分别连到了P0.0,P0.1,P0.2。
2:弄清IO控制原理
PINSEL0是个32位寄存器,用来配置P0.0~P0.31的功能。对一个从来没有接触单片机或ARM的人来说,这个图也许看不懂,下面做一个比较详细的分析,如果你掌握了lpc2136的IO控制原理,那么所有单片机,ARM,及其他架构的CPU的IO控制原理理同。这就是触类旁通。
位1到0用来配置P0.0:
当位1到0为00时,P0.0配置为GPIO功能(即通用输入输出引脚);
当位1到0为01时,P0.0配置为TXD功能(UART0);
当位1到0为10时,P0.0配置为PWM1;
当位1到0为11时,保留;
3:PINSEL0应该配置为多少
因为我们这里是要让LED亮起来,也就是要给LED所连在CPU上的引脚一个电平,所以我们这里应该配置这几个引脚为GPIO功能。
我们板子上的3个LED对应到P0.0,P0.1,P0.2。
PINSEL0 = 0x00000000;(0x表示用16进制表示,因为我们这里只做LED实验,其他引脚不考虑,采用默认配置,所有引脚在系统上电复位时的默认值为0)
4:引脚方向如何定
功能配置好了,那么这四个引脚是设置成输入还是输出呢?
此设置是通过IO0DIR寄存器来实现的。
其实很多初学者不清楚“输入”和“输出”的概念。这里做出通俗解释:
这里所说的“输入”和“输出”是针对CPU来说的,即输入就是外部(外设)有个信号进入到CPU,输出就是CPU输出一个信号到外部(外设)。举一个例子大家就明白了:
我们日常用的键盘设备,键盘线上肯定是有几根数据线的,这个不用质疑。那么当我们按下某一个键时,肯定是有一个信号给到了电脑CPU,那么这个信号对电脑CPU来说就是输入信号,或者说键盘对电脑来说就是输入设备了。
当我们开机看到电脑显示器显示的信息(不管是文本信息还是图像信息),显示器与电脑主板之间肯定是有数据线连起来的,那么这些信息就是CPU通过电脑显卡把数据输出到显示器的,显示器对电脑来说就是输出设备。
通过这样解释,大家应该能够知道我们这里的四个引脚应该配置成输出。
IO0DIR=0x00000007;(其他引脚采用默认值:输入)
5:设置引脚值
现在功能配置好了,方向也设置好了,还剩下最后一个问题:
是输出高电平,还是输出低电平呢?
当要输出高电平:由IO0SET寄存器来完成。
当要输出低电平:由IO0CLR寄存器来完成。
6:什么情况下输出高,什么情况下输出低
回到“图1”,稍微懂一点电路知识的人,应该知道是低电平LED亮,高电平LED灭。所以,当你要让LED亮的时候就输出低电平,否则,输出高电平。
(后一篇:《学习ARM7从跑马灯和蜂鸣器开始(二)》 写代码实现跑马灯)
814926778_482657869 2011-5-13 11:37
用户1495860 2010-9-19 09:24
用户1381122 2010-9-10 21:34
飞言走笔 2010-8-24 14:44
用户1458475 2010-8-23 09:26
yyangong_156966006 2010-8-22 15:43
用户1416972 2010-8-22 13:06
lfy27_561049192 2010-8-20 09:21
用户1277994 2010-8-19 10:25