打印

LM3S811使用心得—从零开始学Cortex-M3内核单片机

[复制链接]
14627|84
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
reayfei|  楼主 | 2011-11-20 15:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 reayfei 于 2011-11-21 16:03 编辑

LM3S811使用心得—从零开始学ARM Cortex-M3内核单片机




    申请到21IC的EK‐LM3S811评估板,非常开心。接下来几天开始搜集相关的资料文档,回到家开始了LM3S的初步相识。有了开发板,代码调试当然是第一步。


开发环境:

             Keil uvision4

         从最初学习51单片机时开始,接触的就是Keil,所以还是支持Keil。

下载工具:
                LM Flash Programmer

                Keil
软件中的Load 工具

遇到的问题:
      1、关于编译器的视频
,视频里讲解了mdk上每个选项的意思及 用法,适合初学mdk的同学们
地址:http://v.youku.com/v_sho/id_XMjQwMDA5MDI0.html

      2LM3S811提供的driver.lib库,想要弄明白每个函数是不可能的事情,最好的方式是一面看例程的程序流程,一面对应着Stellaris® Peripheral Driver Library  USER’S GUIDE.PDF 文档来看,前期指导函数的作用就可以了。

       3、 LM3S811防锁死,翻阅LM3S基本例程.PDF,有个底。有什么办法可以防止LM3S811锁死?

     对于Sandstorm 家族(即 LM3S100、300、600、800 等) ,一旦JTAG接口因为误将其无防护地配置为 GPIO接口而被锁定,则有可能再也无法恢复。为了防患于未然,我们建议在编写每一个应用程序时都必须要在 main( )函数的开始处插入一段能够预防JTAG失效的代码。
参考:《LM3S基本例程》

   4、 如何添加驱动driver.lib库?

    浏览StellarisWare\ driverlib \ rvmdk driverlib选择库文件。注意,你需要把文件浏览器更改为寻找库文件类型,所以改变“文件类型的"下拉列表从“C源文件”到“库文件(* lib)”或“所有文件”。


一、实验一:LED流水灯


EK_LM3S811评估板硬件图的简要说明:

LED:
PD0/PWM0‐‐‐‐‐‐‐‐‐‐‐‐‐‐LED3,

PD1/PWM1‐‐‐‐‐‐‐‐‐‐‐‐‐‐LED4,绿

PB0/PWM2‐‐‐‐‐‐‐‐‐‐‐‐‐‐LED5,

PB1/PWM3‐‐‐‐‐‐‐‐‐‐‐‐‐‐LED6,

PE0/PWM4‐‐‐‐‐‐‐‐‐‐‐‐‐‐LED7,绿

PE1/PWM5‐‐‐‐‐‐‐‐‐‐‐‐‐‐LED8,


   与JTAG接口复用的GPIO是:PB7(/TRST)、PC0(TCK)、PC1(TMS)、PC2(TDI)、PC3(TDO)

/****************
引用文件*****************************/

#include "hw_ints.h"


#include "hw_memmap.h"


#include "hw_types.h"


#include "gpio.h"


#include "sysctl.h"


#define uint unsigned int


#define uchar unsigned char


/***********宏定LED控制引脚***************/


#define LED_PERIPBH SYSCTL_PERIPH_GPIOB //LED B端口作通用/
宏定


#define LED_PERIPDH SYSCTL_PERIPH_GPIOD //LED D端口作通用/
宏定


#define LED_PERIPEH SYSCTL_PERIPH_GPIOE //LED E端口作通用/
宏定


#define BLUE1_L
GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_0,~GPIO_PIN_0)
//BLUE1
管脚


#define GREEN1_L GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_1,~GPIO_PIN_1)
//GREEN1
管脚


#define RED1_L
GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0,~GPIO_PIN_0)
//RED1
管脚


#define BLUE2_L
GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_1,~GPIO_PIN_1)
//BLUE2
管脚


#define GREEN2_L GPIOPinWrite(GPIO_PORTE_BASE,GPIO_PIN_0,~GPIO_PIN_0)
//GREEN2
管脚


#define RED2_L
GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_1,~GPIO_PIN_1)
//RED2
管脚


#define BLUE1_H
GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_0,GPIO_PIN_0)
//BLUE1
管脚


#define GREEN1_H GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_1,GPIO_PIN_1)
//GREEN1
管脚


#define RED1_H
GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0,GPIO_PIN_0)
//RED1
管脚


#define BLUE2_H
GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_1,GPIO_PIN_1)
//BLUE2
管脚


#define GREEN2_H GPIOPinWrite(GPIO_PORTE_BASE,GPIO_PIN_0,GPIO_PIN_0)
//GREEN2
管脚


#define RED2_H
GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_1,GPIO_PIN_1)
//RED2
管脚


/**************** 如无外部按键设计,可省略**************/


// KEY


#define KEY_PERIPH SYSCTL_PERIPH_GPIOC


#define KEY_PORT GPIO_PORTC_BASE


#define KEY_PIN GPIO_PIN_4


// 防止JTAG失效


void jtagWait(void)


{



SysCtlPeripheralEnable(KEY_PERIPH);
//
使能KEY所在的GPIO端口



GPIOPinTypeGPIOInput(KEY_PORT,KEY_PIN);
//
KEY所在管脚为输



if (GPIOPinRead(KEY_PORT,KEY_PIN) == 0x00) //
按下KEY则进



{



while(1);
//
死循,以等待JTAG



}



GPIOPinIntDisable(KEY_PERIPH,KEY_PIN);
//
禁止KEY所在的GPIO端口


}


//


void delay (uint a)

{
uint i,j;
for(i=256;i>0;i--)
for(j=256;j>0;j--)
while(a>0)
a--;

}

int main(void)
{
jtagWait();
// 防止JTAG失效
SysCtlClockSet(SYSCTL_SYSDIV_1| SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |SYSCTL_XTAL_6MHZ);



//SysCtlClockSet
()系统时钟设
采用主振
外接6MHz晶振
不分




//
使能LED所在引脚



SysCtlPeripheralEnable(LED_PERIPBH);



SysCtlPeripheralEnable(LED_PERIPDH);



SysCtlPeripheralEnable(LED_PERIPEH);




//GPIO
出型的



GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE,GPIO_PIN_1);



GPIOPinTypeGPIOOutput(GPIO_PORTE_BASE,GPIO_PIN_0);



GPIOPinTypeGPIOOutput(GPIO_PORTE_BASE,GPIO_PIN_1);



GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE,GPIO_PIN_0);



GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE,GPIO_PIN_1);



GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE,GPIO_PIN_0);




//
初始化程拉低全部LED控制脚



BLUE1_L;

BLUE2_L;

RED1_L;

RED2_L;

GREEN1_L;

GREEN2_L;

while(1)

{

delay(500000);

BLUE1_H;

BLUE2_H;

RED1_L;

RED2_L;

GREEN1_L;

GREEN2_L;

delay(500000);

BLUE1_L;

BLUE2_L;

RED1_H;

RED2_H;

GREEN1_L;

GREEN2_L;

delay(500000);

BLUE1_L;

BLUE2_L;

RED1_L;

RED2_L;

GREEN1_H;

GREEN2_H;

  }


}

LM3S基本例程.PDF

321.77 KB

LM3S811使用心得—从零开始学ARM Cortex-M3内核单片机.pdf

155.21 KB

相关帖子

沙发
一个机会| | 2011-11-20 17:33 | 只看该作者
这已经不是零水平了啊

使用特权

评论回复
板凳
reayfei|  楼主 | 2011-11-20 20:17 | 只看该作者
2# 一个机会 从零积累,会增加的。

使用特权

评论回复
地板
qixiyi| | 2011-11-21 10:30 | 只看该作者
支持!:)

使用特权

评论回复
5
gexingyouxian| | 2011-11-21 12:01 | 只看该作者
支持,顶顶,这个很好啊,楼主加油

使用特权

评论回复
6
yangguangaisha| | 2011-11-21 12:25 | 只看该作者
挺好的,收藏了,需要的时候就拿出来看一下

使用特权

评论回复
7
long009| | 2011-11-21 13:36 | 只看该作者
楼主研究的不错呀!

使用特权

评论回复
8
reayfei|  楼主 | 2011-11-21 16:02 | 只看该作者
7# long009 谢谢夸奖

使用特权

评论回复
9
reayfei|  楼主 | 2011-11-22 20:16 | 只看该作者
:lol

使用特权

评论回复
10
lzlong| | 2011-11-24 09:38 | 只看该作者
楼主有种精神 一定能学的很好 一起努力

使用特权

评论回复
11
永远的不知| | 2011-11-24 10:11 | 只看该作者
写的不错,对入门很有帮助。

使用特权

评论回复
12
rebewn| | 2011-11-25 16:16 | 只看该作者
楼主这哪是0基础啊   难啊

使用特权

评论回复
13
reayfei|  楼主 | 2011-11-28 16:35 | 只看该作者
:D

使用特权

评论回复
14
qixiyi| | 2011-11-29 16:54 | 只看该作者
顶一个

使用特权

评论回复
15
zzgezi| | 2011-11-30 10:06 | 只看该作者
1# reayfei
楼主可否传一些ADC的例程啊。谢谢了啊

使用特权

评论回复
16
reayfei|  楼主 | 2011-11-30 20:18 | 只看该作者
15# zzgezi 可以啊,要等几天,还得上班。

使用特权

评论回复
17
reayfei|  楼主 | 2011-11-30 20:18 | 只看该作者
10# lzlong 互勉

使用特权

评论回复
18
czdo| | 2011-11-30 20:28 | 只看该作者
支持楼主的无私奉献啊!!!:)

使用特权

评论回复
19
msp430ing| | 2011-11-30 20:36 | 只看该作者
酷贴,顶一个

使用特权

评论回复
20
reayfei|  楼主 | 2011-11-30 20:49 | 只看该作者
18# czdo 大家共同学习

使用特权

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

本版积分规则

个人签名:WiFi包邮:http://item.taobao.com/item.htm?id=19254130983

15

主题

395

帖子

2

粉丝