其实很多人都认为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;
哈哈哈哈哈哈,懒人方案做出来了,我们剩下的函数就不用改了!!!
成功!!!!
至于其他的都是跟单片机差不多,我们就慢慢学吧!!!! |