原创 学习ARM7从跑马灯和蜂鸣器开始 (一)(嵌入式学习连载)

2012-4-4 12:32 7090 21 30 分类: 消费电子

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亮的时候就输出低电平,否则,输出高电平。

(后一篇:《学习ARM7从跑马灯和蜂鸣器开始(二)》 写代码实现跑马灯)

 

文章评论9条评论)

登录后参与讨论

814926778_482657869 2011-5-13 11:37

谢谢楼主

用户1495860 2010-9-19 09:24

谢谢博主的文章

用户1381122 2010-9-10 21:34

51单片机还没有学会呢。。。有待进步了。。

飞言走笔 2010-8-24 14:44

有点像广告呢,呵呵

用户1458475 2010-8-23 09:26

不错,学习了!楼主真的很有耐心!

yyangong_156966006 2010-8-22 15:43

OK!!

用户1416972 2010-8-22 13:06

谢谢LZ耐心、细心和热心写的文章

lfy27_561049192 2010-8-20 09:21

very practical example, guiding how to think and design/control to achieve functionality.

用户1277994 2010-8-19 10:25

谢谢博主耐心、细心和热心写的文章。
相关推荐阅读
用户1037328 2016-04-17 17:59
好的理论可以避免犯错——读《丈量世界》有感!
     《丈量世界》,早就因为仰慕高斯而想看这本书      1.殊途同归      这本书写的是高斯和洪堡两个人,为什么要把这两个人放在一起写呢?因为高斯是一个宅男,不喜欢什么旅游,考察!他觉得...
用户1037328 2016-04-05 09:10
叛逆在爱因斯坦性格中的重要性(一)
叛逆在爱因斯坦性格中的重要性(一) 《爱因斯坦传》读书笔记      昨天晚上,读完了2016年书单的第二部书,《爱因斯坦传》。我想梳理一下自己读这本书的收获,或者说感悟!在读这...
用户1037328 2016-04-05 09:09
叛逆在爱因斯坦性格中的重要性(二)
叛逆在爱因斯坦性格中的重要性(二) 《爱因斯坦传》读书笔记                                四  叛逆性 在爱因斯坦的同时期科学家中,我想比他IQ...
用户1037328 2014-07-09 19:55
RTEMS系统时钟原理
作者,下家山(转载请注明作者及出处,请尊重原创)   专注嵌入式(ARM7,Cortex-M0,Cortex-M3,ARM9,linux)培训 一:从应用看原理      每个...
用户1037328 2014-07-09 19:47
RTEMS在S3C2410上的移植(一)
作者:下家山(转载,请注明) 1:RTEMS开发环境建立 1.1开发环境建立前的准备工作 因为RTEMS开发环境主要用的是GNU的工具链,所以需要一台装有Linux的HOST. 1.2...
用户1037328 2014-07-09 19:45
深入浅出学Makefile<三,如何自动生成Makefile>
(请尊重原创,转载请注明,作者:下家山) 五: 运行make编译得到可执行文件 root@parson-desktop:/home/parson/tmp/automk# make gcc ...
我要评论
9
21
关闭 站长推荐上一条 /2 下一条