(lm3s811分享)从单片机向arm转型之我见

[复制链接]
5181|7
 楼主| gaochy1126 发表于 2011-10-16 14:42 | 显示全部楼层 |阅读模式
其实很多人都认为arm学起来很难,不知道该怎么入手,我也遇到过这样的问题,我介绍一下我学习lm3s811的经验。
其实单片学起来很简单,我们无非对寄存器进行操作,对某个寄存器赋予某个值,使单片机完成某个操作。
先看看这个头函数,这些都是驱动函数,用起来比单片机简单,我们可以直接写,甚至是copy而已啊!!!!我们只要去对应的找就行
#include "inc/hw_types.h"   
#include "inc/hw_memmap.h"   
#include "driverlib/sysctl.h"   
#include "driverlib/gpio.h"
#include "driverlib/timer.h"
我们用到什么库,就去找什么库吧!!!!随机而变啊!
单片机不用进行初始化系统,而使用lm3s811时需要先进行操作,这些都是固定的 :
    SysCtlClockSet(SYSCTL_OSC_MAIN|SYSCTL_XTAL_6MHZ|SYSCTL_USE_OSC|SYSCTL_SYSDIV_1);  
     
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);  
我们入门的时候,这个都不用改变,直接用来就行啊!!


IO口用起来很简单,就是得先设定输入或者输出而已。。。。。。。。。。

    GPIODirModeSet(GPIO_PORTC_BASE,GPIO_PIN_5,GPIO_DIR_MODE_OUT);  
      
    GPIOPadConfigSet(GPIO_PORTC_BASE,GPIO_PIN_5,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD);  


然后就是写函数就可以了啊啊啊啊啊啊啊啊啊啊 啊啊 啊啊啊啊啊啊啊 啊啊啊啊啊!
GPIOPinWrite(GPIO_PORTC_BASE,GPIO_PIN_5,0Xff);

。。。。。


看看这个这些函数里面啊就连延时函数也有,用起来比单片机要简单啊,还准确啊:
SysCtlDelay(SysCtlClockGet()/6);


再来看看怎么用以前的函数来看看啊:::(以1602为例看看啊)

rw = 1;这是在单片机里面用到的啊
我们在ls3s811里面用#define rw1 GPIOPinWrite(GPIO_PORTC_BASE,GPIO_PIN_5,0X01);

#define rw0 GPIOPinWrite(GPIO_PORTC_BASE,GPIO_PIN_5,0X00);

这样既可以定义出来rw 是高或者低了!
我们把所有的rw=1 换成rw1 或者rw=0 换成rw0;
哈哈哈哈哈哈,懒人方案做出来了,我们剩下的函数就不用改了!!!
成功!!!!
至于其他的都是跟单片机差不多,我们就慢慢学吧!!!!
xxlin1984 发表于 2011-10-19 16:00 | 显示全部楼层
还有一点不同:使用中断时,要先修改setup.c/setup.a文件里向量表并声明中断向量。
chenyelong 发表于 2011-10-19 17:08 | 显示全部楼层
说的太过简单
chencheng 发表于 2011-11-11 20:25 | 显示全部楼层
又帮助。谢谢!
fengye5340 发表于 2011-11-16 18:37 | 显示全部楼层
ARM感觉比单片机傻瓜,如果不知道底层而用这些封装好的函授的话,就是在操作黑箱呀,呵呵
lanzeex 发表于 2011-11-16 21:53 | 显示全部楼层
会看例程,会读手册,有C语言基础,就能凑合出程序....
 楼主| gaochy1126 发表于 2011-12-19 12:22 | 显示全部楼层
同意ls! 6# lanzeex
ddllxxrr 发表于 2011-12-19 14:11 | 显示全部楼层
不同意,没有例程简单吗?难道只是考考例程而已么????
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1205

主题

11937

帖子

26

粉丝
快速回复 在线客服 返回列表 返回顶部