Chinaunix首页 | 论坛 | 博客
  • 博客访问: 928013
  • 博文数量: 146
  • 博客积分: 3321
  • 博客等级: 中校
  • 技术积分: 1523
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-29 10:32
文章分类

全部博文(146)

文章存档

2014年(2)

2013年(5)

2012年(4)

2011年(6)

2010年(30)

2009年(75)

2008年(24)

分类:

2009-05-09 17:24:19

   最近刚开始学习ARM1138,今天终于在板子上成功调试了自己的第一个程序,感觉比较爽。顺便记下我的经验。
   对于像我一样的新手来说,初次接触ARM感觉他总是很神秘,好像无法前进。不过经过这几天的学习,总算是对这个东西有了一点点了解。刚开始我们应该先看看GPIO相关的一些东西,对这个先有一点初步的印象,不一定非得把它搞透。刚开始只要知道他就是板子中的一个模块,可以负责输入输出的控制,我们靠一组寄存器实现对GPIO的控制。当然我们对这组寄存器的功能和控制方法就要有相应的了解了。
比如说IO0SET = 0X000000FF ,功能就是使作为GPIO功能的P0.0~P0.7输出高电平;IO0CLR = 0X00000080,功能就是使得P0.7输出低电平。类似这些的东西我们可以在学习过程中逐步深入(至少我目前是这么认为的)。了解了这些东西就可以看懂一些简单的程序了。
   比如在1138上写个LED点亮的程序。
   首先打开IAR 集成开发环境。选择File|Open|Workspace,这里我们选择采用工程模板,也就是开发板光盘中提供的模板,这样我们可以省略自己手动建立工程项目的繁琐程序。如下图所示:
 
      然后在main.c中添加你的代码如下:

#include  "systemInit.h"


//  定义LED
#define  LED_PERIPH             SYSCTL_PERIPH_GPIOG
#define  LED_PORT               GPIO_PORTG_BASE
#define  LED_PIN                GPIO_PIN_2


//  主函数(程序入口)
int main(void)
{
    jtagWait();                                        //  防止JTAG失效,重要!
    clockInit();                                       //  时钟初始化:晶振,6MHz

    SysCtlPeriEnable(LED_PERIPH);                      //  使能LED所在的GPIO端口
    GPIOPinTypeOut(LED_PORT, LED_PIN);                 //  设置LED所在管脚为输出

    for (;;)
    {
        GPIOPinWrite(LED_PORT, LED_PIN, 0x00);              //  点亮LED
        SysCtlDelay(150 * (TheSysClock / 3000));            //  延时约150ms

        GPIOPinWrite(LED_PORT, LED_PIN, 0xFF);              //  熄灭LED
        SysCtlDelay(850 * (TheSysClock / 3000));            //  延时约850ms
    }
}

 

然后选择Project|Debug,OK!至此我们就完成了。稍待片刻你就可以看到1138上的一个LED灯闪烁起来了。

 

阅读(1960) | 评论(0) | 转发(0) |
0

上一篇:gets函数的漏洞

下一篇:PCB 简介

给主人留下些什么吧!~~