(第一天)S3C6410点亮一个LED

来源:互联网 发布:梦幻手游和互通版 知乎 编辑:程序博客网 时间:2024/06/06 03:06

今天开始学习ARM11,使用的是飞凌的OK6410A开发板.

 

平台信息:

采用的是三星的S3C6410,板载256MB DDR,2G NAND.

Win7 32bit

RVDS 2.2

 

 

1.像以前学习51时一样,首先点亮一个LED.

计算机生成了可选文字: etrowerk'Codewarrlor-而竺目】口r叫口口口口口口口口口口FileEditViewSearchprojertDebugToolsWindowHelpMil护一的勿台哆.。。取、龟省.,!图谬‘冬园l函.一」引协生招翻.n忱p,k,{l甲性,函,团甲rat、:n:\。esktop\ie之test\*n*t.,IMpORTMain份Debu'引涵罕谬冬卜固Fil。,L、、oraer}Tar:et,A只EA}c$$code},coDE,READoNLYq10bals七art-111一‘FilecodeData恤蛛star七b1Main月习习:…巨亚习一1一1mainc一l一153C6410一却.h…END

这是启动文件,最简单的,就声明一个代码段,跳转到main函数.因为是刚刚学习,因此暂时不去深究.

 

 

2.主要的代码,就一个延时函数,一个LED  IO初始化函数,一个主函数,非常简单的.

LED0-LED4用的是 GPIOM0-GPIOM3

 

GPIOM寄存器

计算机生成了可选文字: 寄存器地址i卖,写描述复位位GP]班CON0x7F008520读泻端口M配咒寄存器肚22222222GP入ID户J0x7F008824i卖l写端口M数据寄存器未定义GP入任UD0X7F008828i卖l写端口M卜拟下拉寄存器oxo000oZAA端日M控制寄存器包括二个控制寄存器,分别是GPMCON、GPMDAT、GPMPUD。

主要设置的就是配置寄存器了

计算机生成了可选文字:

 

 

 

 

#include"s3c6410_map.h"

 

 

void led_init(void)

{

GPIOM->CON= 0x1111;

GPIOM->DAT= 0;

}

 

void Delay(u32 n)

{

u32i;

while(n--)

{

for(i= 0;i < 2000000;i ++);

}

}

 

void Main(void)

{

u8i;

led_init();

while(1)

{

for(i= 0;i < 4;i++)

{

GPIOM->DAT= ~(1 << i);

Delay(3);

}

 

}

}

 

 

3.寄存器映射,仿照的STM32官方的库函数,之前学习STM32感觉这种采用指针的操作方式非常方便,比起STM32的寄存器设置,S3C6410        相对来说非常的简单

 

//作者:陈鹏

//创建时间:20120218

//最后修改时间:20120218

//说明:S3C6410寄存器映射定义

 

 

#ifndef_S3C6410_MAP_H_

#define_S3C6410_MAP_H_

 

//

#define _GPIOM

 

//**********************************************************************************//

//数据结构定义

/* Includes------------------------------------------------------------------*/

/* Exported types------------------------------------------------------------*/

typedef signedlong  s32;

typedef signed shorts16;

typedef signedchar  s8;

 

typedef signedlong  const sc32;  /* Read Only */

typedef signed shortconst sc16;  /* Read Only */

typedef signedchar  const sc8;   /* Read Only */

 

typedef volatilesigned long  vs32;

typedef volatilesigned short vs16;

typedef volatilesigned char  vs8;

 

typedef volatilesigned long  const vsc32;  /* Read Only */

typedef volatilesigned short const vsc16;  /* Read Only*/

typedef volatilesigned char  const vsc8;   /* Read Only */

 

typedef unsignedlong  u32;

typedef unsignedshort u16;

typedef unsignedchar  u8;

 

typedef unsignedlong  const uc32;  /* Read Only */

typedef unsignedshort const uc16;  /* Read Only */

typedef unsignedchar  const uc8;   /* Read Only */

 

typedef volatileunsigned long  vu32;

typedef volatileunsigned short vu16;

typedef volatileunsigned char  vu8;

 

typedef volatileunsigned long  const vuc32;  /* Read Only */

typedef volatileunsigned short const vuc16;  /* Read Only*/

typedef volatileunsigned char  const vuc8;   /* Read Only */

 

typedef enum {FALSE= 0, TRUE = !FALSE} bool;

 

 

//**********************************************************************************//

//GPIO

//外设寄存器定义

typedef struct

{

u32        CON;

u32        DAT;

u32        PUD;

u32        CONSLP;        //可能没有

u32        PUDSLP;        //可能没有

}GPIO_TypeDef;//定义一个GPIO寄存器结构类型

 

 

//**********************************************************************************//

//GPIO

//外设基址

#define GPIOM_BASE0x7f008820        //GPIOM基址

 

 

//**********************************************************************************//

//GPIO

#ifdef _GPIOM

#defineGPIOM        ((GPIO_TypeDef*)GPIOM_BASE)

#endif

 

 

 

#endif

 

 

4,工程建立以及仿真运行

工程建立仿真可以参阅国嵌的OK6410视频,电驴资源里面有下载.

原创粉丝点击