今天开始学习ARM11,使用的是飞凌的OK6410A开发板.
平台信息:
采用的是三星的S3C6410,板载256MB DDR,2G NAND.
Win7 32bit
RVDS 2.2
1.像以前学习51时一样,首先点亮一个LED.
这是启动文件,最简单的,就声明一个代码段,跳转到main函数.因为是刚刚学习,因此暂时不去深究.
2.主要的代码,就一个延时函数,一个LED IO初始化函数,一个主函数,非常简单的.
LED0-LED4 用的是 GPIOM0-GPIOM3
GPIOM寄存器
主要设置的就是配置寄存器了
#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视频,电驴资源里面有下载.