返回首页

ARM11——点亮LED灯

时间:2012-05-09 09:45来源:中国IT实验室 作者:未知 点击:
首先你得有三星公司提供的startup.s文件,用来初始化并通过跳转进入main()函数 使用软件:ADS1.2 使用JLINK调试 //使用加入头文件, //以下头文件中包含了6410的寄存器的定义 #include s3
  

首先你得有三星公司提供的startup.s文件,用来初始化并通过跳转进入main()函数

  使用软件:ADS1.2

  使用JLINK调试

  //使用加入头文件,

  //以下头文件中包含了6410的寄存器的定义

  #include "s3c6410_addr.h"

  //#include "utils.h"       //用来使用Uart_Printf函数

  //配置LED灯亮暗的数据

  //这里你得知道你的LED灯所在的具体引脚位置,例:GPK4-GPK7

  //输出低电平点亮LED

  #define LED1_ON ~(1<<4)

  #define LED2_ON ~(1<<5)

  #define LED3_ON ~(1<<6)

  #define LED4_ON ~(1<<7)

  #define LEDALL_ON ~(0xf<<4)

  #define LED1_OFF (1<<4)

  #define LED2_OFF (1<<5)

  #define LED3_OFF (1<<6)

  #define LED4_OFF (1<<7)

  #define LEDALL_OFF (0xf<<4)

  //使用到的函数声明

  void delay(int times);

  void LedPortInit(void);

  void LedRun(void);

  //主函数

  void _main(void)

  {

  //Uart_Printf("\r\n<**********开始*************>\r\n");  //通过串口来打印消息,

  LedPortInit();      //端口初始化

  LedRun();         //运行LED

  }

  //延时函数

  void delay(int times)

  {

  int i;

  for(;times>0;times——)

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

  }

  //初始化LED

  //首先得知道如何配置GPIO端口

  //配置寄存器GPxCON:控制输入输出

  //数据寄存器GPxDAT:存放数据

  void LedPortInit(void)

  {

  unsigned long int uConValue;   //arm是32位的,所以需要定义长整形

  uConValue=rGPKCON0;

  uConValue &= ~(0xffff<<16);    //GPK4-7在GPKCON0寄存器的高位

  uConValue |=0x1111<<16;     //把端口配置成输出模式

  rGPKCON0=uConValue;

  }

  //led全亮全灭程序

  void LedRun(void)

  {

  while(1)

  {

  rGPKDAT&=LEDALL_ON;  //对寄存器赋值,使其亮灭

  delay(1000);

  rGPKDAT|=LEDALL_OFF;

  delay(1000);

  }

  }

  现在你可以使用JLINK调试了

  我是在mini6410的开发板上进行调试的。

  至于调试软件的配置等参考其他文章吧

  可能遇到的问题:

  报错:failed to single step. CPU did not halt on breakpoing

  原因:可能是startup.s中的跳转语句 b main 出现问题,无法跳转到我们的main函数中

  解决:我没找到解决方法,但是我有一个现成可用的工程,我把C文件中的全部内容都换成了自己的,只保留了 main(){}的框架,结果我的程序就能用了,我也不知道为什么,可能还是我的程序其它地方有问题吧。这个方法仅供参考。

------分隔线----------------------------

  • 李老师
  • 李老师
  • 胡老师
  • 胡老师
合作伙伴
  • 武汉工程大学合作培训机构

  • 国家信息技术紧缺人才培养工程(NITE)

  • ARM公司全球授权培训中心

  • 国内首家Symbian授权培训

  • 微软全球嵌入式合作伙伴

  • Altera全球合作培训机构

在线客服
  • 客服热线:
    139-8620-3604
    159-2752-9536



  • 官方微信
  •  咨询微信二维码