分类: 嵌入式
2013-07-27 09:00:41
让接在IO口上的LED闪烁如同程序员的"hello world!"程序一样,是学习者迈出的第一步。以下介绍我在RealView MDK下
创建的第一个项目:“让LED闪起来”
硬件环境:自制的电路班,电路参考了AT91SAM7S-EK
CPU:AT91SAM7S64
软件环境:Keil uVersion4 RealView MDK-ARM 4.11
下载:SAM-BA1.8
一. 电路
二.项目创建
1.在MDK下创建一个新项目,目标器件选择ATMEL的AT91SAM7S64
2.MDK提示是否复制默认启动文件并添加到项目时选择“是”
3.创建一个新的c文件将下面的源程序写入,保存后将此文件添加到项目中
4.为了在编译是生成SAM-BA所需的BIN格式的目标代码,选中Option for target -> User ->Run User Programs After Build/Rebuild框
Run#1并在后面的编辑框添入:fromelf.exe --bin -o $L@L.bin #L
三.程序
#include
#define LED_MASK (1<<7)
void delay(void) //尽管在正式的程序中不会使用类似的延时函数,但是在学习或调试阶段此种函数是很有用的
{
volatile int i,j;
for(i=0;i<50;i++)
for(j=0;j<100000;j++);
}
int main(void)
{
unsigned int x;
AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOA ; //PIOA时钟使能
AT91C_BASE_PIOA->PIO_PER = LED_MASK; // PA7设置为PIO 模式
AT91C_BASE_PIOA->PIO_OER = LED_MASK; // PA7设置为输出模式
while(1)
{
if(x)
{
AT91C_BASE_PIOA->PIO_CODR=LED_MASK;//关LED
x=0;
}
else
{
x=1;
AT91C_BASE_PIOA->PIO_SODR= LED_MASK;//开LED
}
delay();
}
}