RealView MDK 示例之一: GPIO点亮发光管

 
      让接在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 <at91sam7s64.h>    //AT91SAM7S64寄存器定义文件,在RealView Mdk系统包含目录中已经有了这个文件

    #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();
        }
    }
    

    下载完整源代码

芯艺设计室(http://www.chipart.cn) 2010.08.16  转载请注明出处!
 

芯艺设计室    蒙ICP备06005492号

Copyright© 2004-2011 ChipArt Design House All Rights Reserved