新闻  |   论坛  |   博客  |   在线研讨会
学习ARM7从跑马灯和蜂鸣器开始(二)
xiajiashan | 2012-08-28 17:06:13    阅读:908   发布文章

上一篇:">《学习ARM7从跑马灯和蜂鸣器开始(一)》

7.写代码实现跑马灯

下面是led实验工程代码main.c中的代码内容

#include "config.h" #include "delay.h"

上面两条语句用来包含config.h和delay.h两个头文件,因为下面要用到的uint32,IO0DIR等寄存器,还有delay()函数等内容都定义在这些头文件里面。

#define LED_1 1<<0 #define LED_2 1<<1 #define LED_3 1<<2

上面四条语句用来定义四个led等所在引脚的位置,便于程序使用。

#define LED1_TO_3 (LED_1|LED_2|LED_3)

上面这条语句把四个LED灯所在引脚或运算后定义到一个常量LED1_TO_3中,也是为了方便程序编写。

/****************************************************************************
* 名称:initSystem()
* 功能:初始化IO
****************************************************************************/

void initSystem(void)
{
PINSEL1 = PINSEL1 & (~(0xff<<12)); //led1~3设置为GPIO
IO0DIR=IO0DIR | LED1_TO_3; //led1~3设置为输出功能
IO0SET=IO0SET | LED1_TO_3; //led1~3同时输出高
}
上面的initSystem函数是为了初始化cpu的各个IO脚的状态,及设置四个LED灯所在IO脚的状态,并初始化它们。

/****************************************************************************
* 名称:Led_On(uint32 num)
* 功能:点亮LED
****************************************************************************/
void Led_On(uint32 num)
{
IO0SET=IO0SET | LED1_TO_3; //所有的led灭
IO0CLR=IO0CLR | num; //点亮num
}
上面的这个函数是为了点亮所给led号,其中参数num就是传进来的参数,代表哪个LED。
/****************************************************************************
* 名称:main()
* 功能:初始化led,并实现3个led灯轮流闪烁的效果。
****************************************************************************/
int main(void)
{

initSystem();
while(1)
{
Led_On(LED_1);
delay(10);
Led_On(LED_2);
delay(10);
Led_On(LED_3);
delay(10);
}
return 0;
}

Ads的安装使用方法见附录一。

四、独立写第一个程序:蜂鸣器

如果,跑马灯完全搞懂了,蜂鸣器程序是可以独立完成的。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
02年接触ARM和ucos,开发过有线和无线图像报警器,IPCamera,人脸识别系统,OCR识别系统,指纹识别系统,05年开始从事Linux及Rtems下WiFi,camera,Ethernet等驱动开发工作,专做嵌入式linux培训,致力于把我十年来的研发经验传授给每一个学员,招人的可以找我,ximenpiaoxue4016@sina.com
推荐文章
最近访客