您的位置:首页 > 其它

ARM裸机程序开发之led流水灯程序

2014-01-07 09:04 507 查看
/****************************************************************

*tiny 6410 开发板 led流水灯程序

* 要做的任务是:首先要看pcb 文件 识别led连到那些管脚上了

* GPK4 -- LED1

* GPK5 -- LED2

* GPK6 -- LED3

* GPK7 -- LED4

* 控制这四个管脚输出高低电平 来实现流水等的功能

*

AUTHOR:kong-hua-sheng 2014-1-6

******************************************************************/

#include"def.h"

#include"gpio.h"

/*定义led管脚点亮发光二极管和 熄灭发光二极管得电平*/

#define LED1_ON ~(1<<4) //得到0x0111 然后用这个数和 data寄存器中的数相与即可设置对用管脚为低电平

#define LED2_ON ~(1<<5)

#define LED3_ON ~(1<<6)

#define LED4_ON ~(1<<7)

/*定义熄灭led管脚的电平*/

#define LED1_OFF (1<<4) //得到ox1000 拿这个数和 data寄存器中的数据相或 运算

#define LED2_OFF (1<<5)

#define LED3_OFF (1<<6)

#define LED4_OFF (1<<7)

#define LED_ALL_OFF (0xf<<4)

/**/

#define GPIO_BASE (0x7F008000) //GPIO的起始地址

#define GPIO ((volatile oGPIO_REGS *)GPIO_BASE)//将起始地址 宏定义为 GPIO

/*如何操作寄存器是值得考虑的 操作寄存器的位 但是不改变其它位的值*/

void LedPortInit(void);

void delay(int ms);

void LedRun(void);

int main(void)

{

LedPortInit();//对led管脚的初始化 包括输入输出配置

LedRun();
//流水灯的功能的实现

}

/*管脚初始化函数 对管脚的输入输出配置*/

void LedPortInit(void)

{

u32 uConValue;//u32是一个宏定义 在def.h中 这里定义了一个32位的变量 用来实现寄存器配置的变量

uConValue = GPIO->rGPIOKCON0;//将寄存器中的值 传递到uConValue中

/*配置GPK管脚的4-7位管脚为输出*/

uConValue &= ~(0xffff<<16);//由于是4位控制一个管脚的工作方式 ---取反0x0000ffff 之后相与 得 0x0000xxxx

uConValue |= (0x1111<<16);//将4-7管脚对应的 控制位 设置为输出 得到的uConValue =0x1111xxxx这就是最后的配置数据

GPIO->rGPIOKCON0 = uConValue;

}

/*延时函数*/

void delay(int ms)

{

int i;

for(;ms>0;ms--)

for(i=1000;i>0;i--);

}

void LedRun(void)

{

GPIO->rGPIOKDAT |= LED_ALL_OFF;//将熄灯的数据 传递到 数据寄存器中去

while(1)

{

GPIO->rGPIOKDAT &= LED1_ON;

delay(1000);

GPIO->rGPIOKDAT |= LED_ALL_OFF;

delay(1000);

GPIO->rGPIOKDAT &= LED2_ON;

delay(1000);

GPIO->rGPIOKDAT |= LED_ALL_OFF;

delay(1000);

GPIO->rGPIOKDAT &= LED3_ON;

delay(1000);

GPIO->rGPIOKDAT |= LED_ALL_OFF;

delay(1000);

GPIO->rGPIOKDAT &= LED4_ON;

delay(1000);

GPIO->rGPIOKDAT |= LED_ALL_OFF;

delay(1000);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: