学习arm的心得体会.docx
- 文档编号:15151203
- 上传时间:2023-07-01
- 格式:DOCX
- 页数:37
- 大小:42.19KB
学习arm的心得体会.docx
《学习arm的心得体会.docx》由会员分享,可在线阅读,更多相关《学习arm的心得体会.docx(37页珍藏版)》请在冰点文库上搜索。
学习arm的心得体会
学习arm的心得体会
篇一:
ARM学习心得体会
ARM四天学习心得体会
1.懂得了如何使用IAR的软件使用,使用前要先进行环境的设置,具体见文档IAR使用说明。
2.第一次是学习点亮LED灯,在点亮LED灯中学习到如果要点亮LED灯必须学会调用已经写好的库函数,对系统进行初始化SystemInit();对IO口进行初始化GPIOInit();,还得对GPIO口的设置GPIOSetDir--设置GPIO口为输入为1的IO口,设置完成后就可以对IO口成为输入输出方向,当要点亮LED灯时,要使用到GPIOSetValue();函数,当为确定好某个IO口确定时,后一个为0时可以设置LED灯为点亮了,然后就可以对IO口进行设置了,用法和单片机基本一致,具体可以参考程序《闪灯》。
3.蜂鸣器的鸣响很简单,就是首先对蜂鸣器的IO端口进行设定以驱动蜂鸣器,GPIOSetDir(PORT3,3,1);当蜂鸣器需要鸣响时,直接对PORT3_3端口进行赋值0《GPIOSetValue(PORT3,3,0);》不让蜂鸣器鸣响则是(GPIOSetValue(PORT3,3,01);)就可以了。
4.串口的使用
串口开始时要初始化出口,并且通过串口打印前会把数据存在数据缓存区里面,如果我们需要通过输入值来控制ARM板子的功能时,可以读取缓存区(UARTBuffer[UARTCount-1])的内容(缓存区的内的数据都是字符型数据【char】)然后就可以通过输入的值来处理,可以用中断方式,也可以用查询方式,可参考串口中断程序
5.中断的使用
使用中断时需要初始化中断例如:
init_timer32(TEST_TIMER_NUM,TIME_INTERVAL);//初始化定时器enable_timer32(TEST_TIMER_NUM);//使能定时器使定时器工作LPC_SYSCON->SYSAHBCLKCTRL|=(1 1:
图1
定时器的使用操作要先开使能,与定时器的定时方式如图2
图2
6.外部中断
外部中断时要先对外部中断的方式进行设置,是下降沿触发还是上升沿触发方式或其他,
图3
7.步进电机
InitStep();//步进机相关引脚初始化
对了步进电机的引脚初始化后就可以对步进电机的转动方向进行控制了,如图
4
图4
当MOTOR_CCW时,为反转方式
8.键盘扫描
对键盘进行操作时,可以对键盘进行操作,可以通过串口输入1~8来控制灯的闪动情况,初始化如图
5
图5
对键盘的操作时使用可以参考如下图6:
图6
在I2C中首先要在头文件定义一个#define__DEBUG_FLASH,使后面的程序生效。
图7所示:
图7
在I2C里面要输出温度值的后面三位小数要经过处理,如图8所示:
图8
芯片
在用到ADC芯片时,可以显示阻值或者mv显示,需经过处理如图9所示:
图9
篇二:
学习ARM的心得体会
arm四天学习心得体会
1.懂得了如何使用iar的软件使用,使用前要先进行环境的设置,具体见文档iar使用
说明。
2.第一次是学习点亮led灯,在点亮led灯中学习到如果要点亮led灯必须学会调用已
经写好的库函数,对系统进行初始化systeminit();对io口进行初始化gpioinit();,还得
对gpio口的设置gpiosetdir--设置gpio口为输入为1的io口,设置完成后就可以对io口
成为输入输出方向,当要点亮led灯时,要使用到gpiosetvalue();函数,当为确定好某
个io口确定时,后一个为0时可以设置led灯为点亮了,然后就可以对io口进行设置了,
用法和单片机基本一致,具体可以参考程序《闪灯》。
3.蜂鸣器的鸣响很简单,就是首先对蜂鸣器的io端口进行设定以驱动蜂鸣器,
gpiosetdir(port3,3,1);当蜂鸣器需要鸣响时,直接对port3_3端口进行赋值0
《gpiosetvalue(port3,3,0);》不让蜂鸣器鸣响则是(gpiosetvalue(port3,3,01);)
就可以了。
4.串口的使用
串口开始时要初始化出口,并且通过串口打印前会把数据存在数据缓存区里面,如果我
们需要通过输入值来控制arm板子的功能时,可以读取缓存区(uartbuffer[uartcount-1])
的内容(缓存区的内的数据都是字符型数据【char】)然后就可以通过输入的值来处理,可以
用中断方式,也可以用查询方式,可参考串口中断程序
5.中断的使用
使用中断时需要初始化中断例如:
init_timer32(test_timer_num,time_interval);//初始化定时器
enable_timer32(test_timer_num);//使能定时器使定时器工作
lpc_syscon->sysahbclkctrl|=(1 过定时器就可以在定时器内直接操作例如图1:
图1
定时器的使用操作要先开使能,与定时器的定时方式如图2图2
6.外部中断
外部中断时要先对外部中断的方式进行设置,是下降沿触发还是上升沿触发方式或其他,图3
7.步进电机
initstep();//步进机相关引脚初始化对了步进电机的引脚初始化后就可以对步进电机的转动方向进行控制了,如图4图4
当motor_ccw时,为反转方式
8.键盘扫描
对键盘进行操作时,可以对键盘进行操作,可以通过串口输入1~8来控制灯的闪动情况,
初始化如图5图5
对键盘的操作时使用可以参考如下图6:
图6
在i2c中首先要在头文件定义一个#define__debug_flash,使后面的程序生效。
图7
所示:
图7
在i2c里面要输出温度值的后面三位小数要经过处理,如图8所示:
图8
芯片
在用到adc芯片时,可以显示阻值或者mv显示,需经过处理如图9所示:
图9篇二:
arm学习心得etcarm学习心得
一、通用i/o口设置:
1、使用pinselx定义端口作为通用i/o功能,每个引脚可能有4个功能,因此需要用2
位来确定其功能
2、设置scs寄存器第0位为1,使其作为快速i/o端口
3、使用pinmodex定义端口的模式,分为上拉,下拉,浮空,因此需要用2位来确定其
模式
4、使用fioxdir来确定端口方向
5、使用fioxmask与fioxclr,fioxset,fioxpin联合来设置端口的值
6、由于通用i/o一般情况下方向是确定的,通常或者为输入,或者为输出,要模拟数据总线,必须在需要的时候,随时改变端口的方向,可使用
fioxdir寄存器完成此项工作
7、除extint0-extint3外,端口0和端口2均可以作为外部中断源,它们共用extint3这个外部中断。
8、根据实际情况合理选用。
主要对上电时的初始值。
上拉或下拉都是弱的,有时也用外部分电阻上/下拉。
对于输入,上拉表示通用端口所连接的外
部信号不存在时,端口值为1,下拉为0。
对于输出,如果没有更改时,上拉输出为高
(1),下
拉输出为低(0)。
fioxpin总是可以读出端口的状态。
fioxpin对非通用i/o端口也可读出其
状态。
9、对于内置(片上)外设,如uart,can,spi等:
使用pinselx定义端口作为特定外设。
通常情况作为外设的引脚的方向是确定的,如果可能,还会自动
改变方向。
大多情况下,无须设置上拉或下拉模。
设置外设的参数,如果需要的话,安装中
断服务程序外设上电(有些外设默认是上电的,有些不是)启动外设
二、以太模块心得
实例1:
以微处理器lpc2368为核心、dp83848c为以太物理层接口芯片,介绍嵌入式以太接口的实现方法。
以太接口电路主要由mac控制器和物理层接口(physicallayer,phy)两大部分构成。
lpc2368内嵌一个以太控制器,支持精简的
媒体独立接口(reducedmediaindependentinterface,rmii)和带缓冲dma接口(buffered
dmainterface,bdi),可在半双工和全双工模式下提供10m/100mbps的以太接入。
因此,
lpc2368内部实际上己经包含了以太mac控制,但并未提供物理层接口,所以,需要外接
一片物理层芯片以提供以太的接入通道。
在这里选用nationalsemiconductor公司的
dp83848c作为以太物理层接口芯片,它提供了包括mii/rmii/sni接口,可以很方便地与
lpc2368连接。
dp83848c是一个10/100mb/s单端低功耗物理层器件,有几种智能降功耗模式,包括有
25mhz时钟输出,很容易通过外接变压器和双绞线媒体接口;支持两种ieeemii和rmiirev,方便了设
计;集成的亚层支持10base-t和100base-tx以太协议;低功耗小于270mw、mac接
口;可配置的sni接口;48引脚lqfp封装(7x7mm)。
dp83848c作为一种以太物理层收发器,
广泛应用于高端外围设备、工业控制和工厂自动化操作、通用的嵌入式应用领域lpc2368与dp83848c连接比较简单,直接通过rmii接口连接即可。
连接好后,dp83848c
再通过络隔离变压器和rj45接口接入传输媒体,其电路框图如图1所示。
。
16st8515为络隔离变压器,其主要是起信号传输、阻抗匹配、波形修复、杂波抑制以
及高电压隔离等作用,以保护系统的安全电路原理图:
实例2:
s3c4510b内嵌一个以太控制器,支持媒体独立接口(mediaindependentinterface,
mii)和带缓冲dma接口(buffereddmainterface,bdi)。
在该系统中,使用rtl8201作
为以太的物理层接口。
篇三:
arm的linux常用指令学习心得体会XXarm的linux常用指令学习心得体会XX-01-2615:
42:
19阅读29评论0字号:
大中
小
********************************************************************************
**********tar*.——>参数jxfv*.tgz——>参数zxfv或zxf*.——>参数zxfv注:
j表示针对bzip2压缩文件;z表示gzip压缩文件;x表示释放文件;
f表示使用档案文件或设备,必选参数;v表示显示解压信息。
********************************************************************************
**********挂载windowsfat32分区mount-tvfat/dev/hda1/mnt/c-ocodepage=936,iocharset=cp936注:
vfat表示加载fat格式分区;(转载于:
学习arm的心得体会)
936是为了支持中文提供的代码页字符集选项,如果不加
codepage=936,iocharset=cp936的话,加载的fat分区中的文件名不能正确显示中文字符串;codepage=936,iocharset=cp936中间无空格分开的;可以使用tab键获得硬盘分区信息的提示;
/mnt/c是预先建立的挂载目录。
********************************************************************************
**********rmrm-rffilenamer表示recuisive递归删除目录下的所有子目录及文件;f表示force,强制删除,不提示;i表示interactive,交互的,删除的时候出现提示。
********************************************************************************
**********linux基本操作命令基本操作命令
----------------------------------------------------------------------ls
----------------------------------------------------------------------ls#以默认方式显示当前目录文件列表ls–a#显示所有文件包括隐藏文件ls–l#显示文件属性,包括大小,日期,符号连接,是否可读写及是否可执行ls--color=never*.so>obj#不显示文字颜色,将所有so文件记录到obj文件中cd
----------------------------------------------------------------------cddir#切换到当前目录下的dir目录cd/#切换到根目录
cd..#切换到到上一级目录cd../..#切换到上二级目录cd~#切换到用户目录,比如是root用户,则切换到/root下rm
----------------------------------------------------------------------rmfile#删除某一个文件
rm-frdir#删除当前目录下叫dir的整个目录cp
----------------------------------------------------------------------cpsourcetarget#将文件source复制为targetcp/root/source.#将/root下的文件source复制到当前目录cp–avsoure_dirtarget_dir#将整个目录复制,两目录完全一样cp–frsource_dirtarget_dir#将整个目录复制,并且是以非链接方式复制,当source
目录带有符号链接时,两个目录不相同mv----------------------------------------------------------------------mvsourcetarget#将文件source更名为targetdiff
----------------------------------------------------------------------diffdir1dir2#比较目录1与目录2的文件列表是否相同,但不比较文件的实际内容,
不同则列出
difffile1file2#比较文件1与文件2的内容是否相同,如果是文本格式的文件,则
将不相同的内容显示,如果是二进制代码则只表示两个文件是不同的----------------------------------------------------------------------echo
----------------------------------------------------------------------echomessage#显示一串字符echomessagemessage2#显示不连续的字符串cat
----------------------------------------------------------------------catfile#显示文件的内容,和dos的type相同catfile|more#显示文件的内容并传输到more程序实现分页显示,使用命令lessfile
可实现相同的功能more
----------------------------------------------------------------------more#分页命令,一般通过管道将内容传给它,如ls|moreexport
----------------------------------------------------------------------exportlc_all=zh_#将环境变量lc_all的值设为zh_exportdisplay=0:
0#通过该设置,当前字符终端下运行的图形程序可直接运行于
xserverdate
----------------------------------------------------------------------date#显示当前日期时间
date-s20:
30:
30#设置系统时间为20:
30:
30date-sXX-3-5#设置系统时期为XX-3-5clock
----------------------------------------------------------------------clock–r#对系统bios中读取时间参数clock–w#将系统时间(如由date设置的时间)写入bioseject
----------------------------------------------------------------------eject#umout掉cdrom并将光碟弹出,但cdrom不能处于busy的状态,否则无效du
----------------------------------------------------------------------du#计算当前目录的容量
du-sm/root#计算/root目录的容量并以m为单位find
----------------------------------------------------------------------find-name/pathfile#在/path目录下查找看是否有文件filegrep
----------------------------------------------------------------------
篇三:
ARM学习心得
ARMlinux学习心得(zt)
XX-08-1313:
55
由于很多人总问这个问题,所以这里做一个总结文档供大家参考。
这里必须先说明,以下的步骤都是针对Linux系统的,并不面向WinCE。
也许你会注意到,现在做嵌入式的人中,做linux研究的人远比做WinCE的人多,很多产家提供的资料也是以linux为主。
我一直很难理解,其实WinCE的界面比linux的界面好看多了,使用起来也很方便,更为重要的是,WinCE的开发和Windows下的开发基本一样,学起来简单得多,但是学linux或者使用linux做嵌入式的人就是远比WinCE多。
在和很多工作的人交流时我了解到,他们公司从没考虑使用WinCE,因为成本高,都是使用linux进行开发。
我读研究生的的实验室中也没有使用WinCE的,大都研究linux,也有少部分项目使用vxwork,但是就没有听说过使用WinCE的,原因就是开源!
当然现在听说也开源,不过在成本和资源上linux已经有了无人能挡的优势。
与此相对应的是,越来越多的电子厂商已经开始使用linux开发产品。
举个例子,Google近期开发的智能手机操作系统Android其实就是使用内核进行改进得到的。
第一,学习基本的裸机编程。
对于学硬件的人而言,必须先对硬件的基本使用方法有感性的认识,更必须深刻认识该硬件的控制方式,如果一开始就学linux系统、学移植那么只会马上就陷入一个很深的漩涡。
我在刚刚开始学ARM的时候是选择ARM7(主意是当时ARM9还很贵),学ARM7的时候还是保持着学51单片机的思维,使用ADS去编程,第一个实验就是控制led。
学过一段时间ARM的人都会笑这样很笨,实际上也不是,我倒是觉得有这个过程会好很多,因为无论做多复杂的系统最终都会落实到这些最底层的硬件控制,因此对这些硬件的控制有了感性的认识就好很多了
学习裸机的编程的同时要好好理解这个硬件的构架、控制原理,这些我称他为理解硬件。
所谓的理解硬件就是说,理解这个硬件是怎么组织这么多资源的,这些资源又是怎么由cpu、由编程进行控制的。
比如说,s3c2410中有AD转换器,有GPIO(通用IO口),还有nandflash控制器,这些东西都有一些寄存器来控制,这些寄存器都有一个地址,那么这些地址是什么意思?
又怎么通过寄存器来控制这些外围设备的运转?
还有,norflash内部的每一个单元在这个芯片的内存中都有一个相应的地址单元,那么这些地址与刚刚说的寄存器地址又有什么关系?
他们是一样的吗?
而与norflash相对应的nandflash内部的储存单元并不是线性排放的,那么s3c2410怎么将nandflash的地址映射在内存空间上进行使用?
或者简单地说应该怎么用nandflash?
再有,使用ADS进对ARM9行编程时都需要使用到一个初始化的汇编文件,这个文件究竟有什么用?
他里面的代码是什么意思?
不要这个可以吗?
诸如此类都是对硬件的理解,理解了这些东西就对硬件有很深的理解了,这对以后更深一步的学习将有很大的帮助,如果跳过这一步,我相信越往后学越会
觉得迷茫,越觉得这写东西深不可测。
因为,你的根基没打好。
不过先声明一下,本人并没有使用ADS对ARM9进行编程,我是学完ARM7后直接就使用ARM9学linux系统的,因此涉及使用ADS对ARM9进行编程的问题我很难回答^_^,自己去研究研究吧。
对于这部分不久将提供一份教程,这个教程中的例程并不是我为我们所代理的板子写的,是我在我们学院实验室拿的,英培特为他们自己的实验箱写的,不过很有借鉴意义,可以作为一份有价值的参考。
第二,使用linux系统进行一些基本的实验。
在买一套板子的时候一般会提供一些linux的试验例程,好好做一段时间这个吧,这个过程也是很有意义的,也是为进一步的学习积累感性认识,你能想象一个从没有使用过linux系统的人能学好linux的编程吗?
好好按照手册上的例程做一做里面的实验,虽然有点娃娃学走路,有点弱智,但是我想很多高手都会经历这个过程。
在这方面我们深蓝科技目前没有计划提供相应的例程,主要是开发板的提供商会提供很丰富的例程,我们不做重复工作,只提供他们没有的、最有价值的东西给大家。
第三,研究完整的linux系统的的运行过程。
所谓完整的linux系统包括哪些部分呢?
三部分:
bootloader、linuxkernel(linux内核)、rootfile(根文件系统)。
那么这
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学习 arm 心得体会