ARM裸机程序开发之led流水灯程序
来源:互联网 发布:mac导出到移动硬盘 编辑:程序博客网 时间:2024/05/16 15:22
/****************************************************************
*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);
}
}
*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);
}
}
0 0
- ARM裸机程序开发之led流水灯程序
- 裸机程序-led流水灯
- ARM裸机程序之LED灯
- tiny6410裸机程序之一、led流水灯
- ARM裸机程序开发——按键控制LED灯
- 用Keil-MDK开发TQ2440裸机程序入门教程——LED流水灯实现
- 用Keil-MDK开发TQ2440裸机程序入门教程——LED流水灯实现
- 用Keil-MDK开发TQ2440裸机程序入门教程——LED流水灯实现
- 编写led裸机程序并烧写到ARM开发板
- ARM裸机程序开发10(LED控制程序)
- s3c2440裸机程序之----LED
- TX2440裸机程序之-LED
- arm裸机程序--LED程序设计
- ARM裸机程序--GPIO实验 LED(1)
- ARM裸机程序--GPIO实验 LED(2)
- 4.8 LED流水灯程序
- linux 裸机开发arm程序
- 嵌入式驱动开发笔记(裸机程序篇)---点亮LED灯
- 如何在 Windows Server 2008 上打开 SQL Server 防火墙端口
- C++程序员学习android开发快速入门指引 (转)
- C++设计模式之1-工厂模式
- java调用WebService接口方法
- Agile software development 学习
- ARM裸机程序开发之led流水灯程序
- 我在年会上的“吐槽”致辞
- 如何打造成功的电商APP应用
- 从零开始node.js入门项目(四)数据对象(mongodb)
- Antlr 4.0和AntlrWorks开发环境配置
- OpenCart之定制注册模块插件
- 部署虚拟化,拥抱开源云,降低IT成本,实现信息化高效管理
- 详解Objective-C runtime
- 网络负载均衡技术