打印

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

[复制链接]
3879|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 | 只看该作者
又帮助。谢谢!

使用特权

评论回复
5
fengye5340| | 2011-11-16 18:37 | 只看该作者
ARM感觉比单片机傻瓜,如果不知道底层而用这些封装好的函授的话,就是在操作黑箱呀,呵呵

使用特权

评论回复
6
lanzeex| | 2011-11-16 21:53 | 只看该作者
会看例程,会读手册,有C语言基础,就能凑合出程序....

使用特权

评论回复
7
gaochy1126|  楼主 | 2011-12-19 12:22 | 只看该作者
同意ls! 6# lanzeex

使用特权

评论回复
8
ddllxxrr| | 2011-12-19 14:11 | 只看该作者
不同意,没有例程简单吗?难道只是考考例程而已么????

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1051

主题

11300

帖子

26

粉丝