新闻  |   论坛  |   博客  |   在线研讨会
学习ARM7从跑马灯和蜂鸣器开始 (一)(嵌入式学习连载)
xiajiashan | 2012-08-28 16:55:54    阅读:1079   发布文章


ARM7的学习以荷兰Philips的ARM芯片LPC系列为代表(该部门已被NXP收购),嵌入式在中国的发展,特别是ARM7的普及离不开广州周立功的功劳,从2002年开始他主推LPC系列ARM芯片,并发展大学计划,可谓是中国大陆的一只“凌阳”。

本文以LPC2136为例进行讲解。

一、认识LPC2136开发板实物图

 

二、认识LPC2136开发板原理图

arm7_2.jpg



三、第一个程序:跑马灯的实现原理

通过LED灯实验熟悉lpc arm系列soc的控制原理。

以lpc2136为例(lpc2103,lpc2114,lpc2104,lpc2106同)

1: 搞清楚板子上的led连在CPU的哪个引脚

arm7_3.jpg

很多板子是通过跳线帽连起来的,需要注意!!!这里,led1,led2,led3分别连到了P0.0,P0.1,P0.2。

2:弄清IO控制原理

arm7_4.jpg



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寄存器来实现的。

arm7_5.jpg



其实很多初学者不清楚“输入”和“输出”的概念。这里做出通俗解释:

这里所说的“输入”和“输出”是针对CPU来说的,即输入就是外部(外设)有个信号进入到CPU,输出就是CPU输出一个信号到外部(外设)。举一个例子大家就明白了:

我们日常用的键盘设备,键盘线上肯定是有几根数据线的,这个不用质疑。那么当我们按下某一个键时,肯定是有一个信号给到了电脑CPU,那么这个信号对电脑CPU来说就是输入信号,或者说键盘对电脑来说就是输入设备了。

当我们开机看到电脑显示器显示的信息(不管是文本信息还是图像信息),显示器与电脑主板之间肯定是有数据线连起来的,那么这些信息就是CPU通过电脑显卡把数据输出到显示器的,显示器对电脑来说就是输出设备。

通过这样解释,大家应该能够知道我们这里的四个引脚应该配置成输出。

IO0DIR=0x00000007;(其他引脚采用默认值:输入)

5:设置引脚值

现在功能配置好了,方向也设置好了,还剩下最后一个问题:

是输出高电平,还是输出低电平呢?

当要输出高电平:由IO0SET寄存器来完成。

arm7_6.jpg

当要输出低电平:由IO0CLR寄存器来完成。

arm7_7.jpg

6:什么情况下输出高,什么情况下输出低

回到“图1”,稍微懂一点电路知识的人,应该知道是低电平LED亮,高电平LED灭。所以,当你要让LED亮的时候就输出低电平,否则,输出高电平。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
02年接触ARM和ucos,开发过有线和无线图像报警器,IPCamera,人脸识别系统,OCR识别系统,指纹识别系统,05年开始从事Linux及Rtems下WiFi,camera,Ethernet等驱动开发工作,专做嵌入式linux培训,致力于把我十年来的研发经验传授给每一个学员,招人的可以找我,ximenpiaoxue4016@sina.com
推荐文章
最近访客