自己的ARM学习历程(入门版).doc

上传人:sk****8 文档编号:3532668 上传时间:2019-06-02 格式:DOC 页数:30 大小:2.13MB
下载 相关 举报
自己的ARM学习历程(入门版).doc_第1页
第1页 / 共30页
自己的ARM学习历程(入门版).doc_第2页
第2页 / 共30页
自己的ARM学习历程(入门版).doc_第3页
第3页 / 共30页
自己的ARM学习历程(入门版).doc_第4页
第4页 / 共30页
自己的ARM学习历程(入门版).doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、第一部分 罗嗦与废话(必看)我写这个,再次申明:这不是教程,至少不是教科书式的教程。只是自己学习的一个过程,准确说是我个人学习的一个思维方式,学习顺序。可能我后面的写的有些乱,又有些天马行空,不过这真正是反映我学习的一个先后过程。 说实话,入门真的很痛苦,那种徘徊再门外而不得要领的感觉真的很痛苦,论坛上大多数教程啊例子什么的都是 ADS 的,刚看时那个郁闷啊,特别是对于学单片机用惯 KEIL 的人来说哦,还要再去学 ADS,我们能够像学习 51 单片机一样学习 ARM。 刚开始也是什么都不懂,在论坛上下了好多 ARM 的教程。也逐个浏览下了,就我个人认为,比较好的两本书,也是我自己整个浏览完(

2、注意,是浏览)的两本。一本是“ARM 嵌入式基础教程配套讲义”,这个是 PPT 文档,我没有找到完整的原书。这个教程我从头到尾看了一次,不过看完还是脑袋糊糊的。在这里,我也请大家对它不要钻研,糊糊的看完即可(要看完),大致知道 ARM 是什么意思,知道 ARM 是有一个内核的,ARM 公司开发内核(什么 ARM7,ARM9,AR1M1就是内核不同),然后交给其他公司添加其他外围设备,所以导致 ARM有衍生出很多种类;然后知道 ARM 都几种操作模式,什么用户模式,系统模式等等(我到现在也叫不全),至于具体什么时候用,干什么用,不用管,用的时候再看; 还有就是知道 ARM 分为 ARM 指令集及

3、 Thumb 指令,这个是汇编的,暂且搁搁吧,哎,本来我也是想向 51 一样先学汇编再学 C 的,不过看来看去,还是不知道汇编从何下手;然后看到 PPT 里一直有个什么启动代码的,什么意思?8 懂,留着,到后面就知道了。不过要写出来,有难度。然后。自己看看,反正看完脑袋还是浆糊就对了,你都搞懂了,我想下面的你也不用看了,你是天才。 说说我当初用 keil 学 ARM 的开端。刚开始不知道 keil C51 原来和 KEIL for arm 是两个东西,从论坛上下了例子后,直接 keil 编译,失败 ing。后来下了个 keil for arm 的,想自己建个工程呢,楞是找不到 LPCXX 在哪

4、里,找到 Philips,下面只写着 see NXP就是这个就搞了好久,把 keil C51,KIEL FOR ARM 反复装来装去,然后又下了别的版本的 keil for arm,还是搞不定,再网上找了几个 keil arm的教程,就是看不不到怎么教人找到 LPCXX 栏目的后来,光是这个就搞了两个多星期,没头绪。于是下了个 ADS,看教程,发现。不会用。没法,又转会 keil,一个偶然的以外,被我发现创建时左边有个 NXP 的栏目,于是点开,往下拉,天啊,上帝啊,终于看到然后问题又来了,看了 ADS 的例子(下了一个基于 PROTEUS 的 ARM虚 拟 开 发 技 术 , 是 ADS 的

5、 ), 我 晕 , 文 件 好 多 啊 , 什 么main.c,target.c,starup.c,lpcxx.c,.然后又看 keil 的,我靠,又是一堆文件说实话,对初学者来说,看见这些文件就怕,干嘛搞那么多啊,我无语。 哪些是可以放在一个文件里的?还是必须要分成几个文件的?还是分成的几个文件必须那样命名的?还是这些文件是必须的,哪些是不必要的?哪些是系统的,哪些自己写的,哪些是可以更改的?还机,就建立一个工程,一个程序文件,写两句:SETB P1.0 ,END,OK 。装上那个 dpj.dll(平凡老师的,大家不陌生吧) ,效果就出来的,多为了研究这个问题,我反复实验,一个一个的改,删,

6、得出结论:可以删,通通删(lpcxx。H 是自动生成)。. 然后说说我看的另一本书,也是我现在还在看的一本书(电子档的)“深入浅出 ARM7(上,下)”,这是本好书,建议大家开始写程序看这个。前面的就像看我说的第一本一样,浏览,纯粹的浏览,有个印象即可;有不懂的地方,以后后面写程序时可以再回过头来研究,带着问题学习这是最好的;否则都不明白对后面的学习有什么帮助,看了也白看,没理解,转眼就忘了。 我这里说的,像学 C51 一样学 ARM,只是给大家一个入门的路,只能说入门,更高深的偶也 8 懂。至于到“会” 的程度,我记得曾经学 VC 时有句话说的好“什么叫会 VC,会建个工程,能弹出个Hell

7、o World就叫会 VC 了?”所以这里也说“不是会点亮个 LED 就叫会 ARM的!”至于 “精通”,当今 21 世纪,呵呵,谁敢言“精通” 二字? 那么“入门者 ”和“高手”有什么区别呢?借用当初学单片机时平凡老师的话,“入门者和高手的区别,看到 FEH 这个 16 进制数,入门者只有看到 8 个 LED,7 个灭,1 个亮,然后才能回过头把 FEH 这个数和 LED7 灭 1 亮联想起来;而高手一看到 FEH,脑海里自然就想最后一句正文,我这个应当是大多数正常人的思维模式了,不敢说让大家成为高手,不过入个门应该不是什么难事。如果最后还没有入门的人,只能说我的思维方式不适合你。一种要么你

8、是牛 B 的天才,好了,废话就说到这里了,脑袋又糊了,打游戏去。 王谷成 于 2008 年 12 月 8 日星期一 农历戊子鼠年 冬月十一 晚 第二部分 像学 51 一样学 ARM 一些说明:本文所述的以及附带的 keil-protues 仿真例子,我都一一重新运行了的,能够 protues 仿真,然后基本上逐条逐句都有详尽的注释。例子以及注释主要参考了论坛下的“基于 PROTEUS 的 ARM 虚拟开发技术”(光盘)和 “深入浅出 ARM7(上,下)”,不过不是像“基于”样完全照抄“深入” ,其中有我自己的理解,有些地方有疑问的我都标出了,哪位如果后来解决了可以发到论坛共享下。 我使用的 k

9、eil for arm 版本是 mdk 3.22a,protues 版本是protues 7.2 sp6(自己装第三方库).如果有人仿真不能的话,估计可能是软件版本的问题。大家可以网上搜搜自己下载。 1:开始创建工程点亮一个 LED 还是从最简单的开始,点亮一个 LED。 打开 keilu3(mdk3.22a),进入时如下图: 然后选择 project(工程)New uVision Project(新工程),起一个工程名,保存。 然后进入如下界面 下拉滚条,找到 NXP(founded by Philips),展开,下拉滚条,选择自己所用的 ARM 型号(我下面的都是 LPC2131 的) 确

10、定后弹出一个对话框如下,问你是否要加载启动代码,选择是,这里必须要加载启动代码(不像 51,加启动代码 A51 反而出错) 然后就是和 keil C51 一样了,建立一个程序文件,加载到工程里。然后写程序,编译,链接。要生成 HEX 代码的话,要在 target 里设置,如下图: 好了,开始点亮一个 LED 使用的是 LPC2131,点亮 LED2. 程序如下(后续省略,建附带的例子文件): #include int main() PINSEL0=0X00000000; /P0 口配置为 GPIO 功能 IODIR0=0XFFFFFFFF; IOSET0=0XFFFFFFFF; 闭 IOCLR

11、0=0X00000002; LED KEIL 编译会警告 /P0 口为输出状态 /P0 口置高电平,所有 LED 关/P0.1 置低电平,点亮第二个/这里(19 行)必须空出一行,否则具体的可以看 keilprotues 的例子。 在这里,include 表示是包含一个 LPC213X.H 的文件这个文件在.keilARMINCPhilips 目录下,里面有一些关于寄存器地址的定义,至于到底是如何定义的,先不管他,反正知道用 C语言写,都要包含这个文件就是了。 然后是 PINSEL0=0X00000000 这句,表示把 P0 口用作 GPIO 功能。在 ARM 里,每一个端口可能有很多功能,什

12、么 GPIO,串口,IIC,SPI等等等等,而要让每个端口工作在什么功能下,就要靠 PINSEL0 或PINSEL1 这两个寄存器来选择了,GPIO- General Purpose Input Output,通用输入输出,就是指那些可以通过软件把输入输出设置为高低电平 1,0 之类的端口,类似与 C51 中的 P0,P1,P2 等口。在 ARM里,各端口的默认功能是 GPIO,所以这一句 PINSEL0=0X00000000 可以不要。 IOSET0=0XFFFFFFFF; IOCLR0=0X00000002;IOSET0,IOCLR0 是 P0口设置高低电平的两个寄存器,只有当选择 GPIO 功能时才有效。IOSET0,IOCLR0 为 1 时,相应的端口才输出高或低电平,注意,不是IOCLR0=0 输 出 低 电 平 , IOSET0,IOCLR0 为 0 时 , 也 就 是 说 对IOSET0,IOSET1 赋值(写)0 是无效的。 最后一点,貌似是 mdk 的 BUG?就是 C 程序写完后,要空一行,注意,这行必须是空的,不能有任何字,注释的也不行,否则 keil编译会有警告,可以看看附带的例子,删掉空行试试。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。