基于mini2440的按键中断控制LED(裸机代码)

发布者:SereneSunset最新更新时间:2020-05-13 来源: eefocus关键字:mini2440  按键  中断控制  LED 手机看文章 扫描二维码
随时随地手机看文章

#define GLOBAL_CLK //相当于定义了FCLK,HCLK,PCLK,UCLK

 

#include "def.h"

#include "option.h"

#include "mmu.h"

#include "2440addr.h"

 

#define LED1_on  rGPBDAT = ((0xf<<5)^(1<<5))  //GPB5=0

#define LED2_on  rGPBDAT = ((0xf<<5)^(1<<6)) //GPB6=0

#define LED3_on  rGPBDAT = ((0xf<<5)^(1<<7))  //GPB7=0

#define LED4_on  rGPBDAT = ((0xf<<5)^(1<<8)) //GPB8=0

#define LED1_3_on  rGPBDAT = ((0xf<<5)^(5<<5)) //GPB5=0,GPB7=0

#define LED2_4_on  rGPBDAT = ((0xf<<5)^(5<<6)) //GPB6=0,GPB8=0

#define LED_off  rGPBDAT = (0xf<<5) //GPB5=1,GPB6=1,GPB7=1,GPB8=1

#define LED_on  rGPBDAT = ~(0xf<<5) //GPB5=0,GPB6=0,GPB7=0,GPB8=0

 

static void __irq key_handler(void); //声明按键中断服务程序 

 

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

延时函数 

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

void delay(int times)

{

    int i,j;

    for(i=0;i       for(j=0;j<400;j++);

}

 

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

LED初始化 

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

void led_init(void)

{

    rGPBUP = (0xf<<5); //禁止上拉电阻 

    rGPBCON = ((1<<16)|(1<<14)|(1<<12)|(1<<10)); //GPB5-8设为输出 

    LED_on;

    delay(5); //延时 

    LED_off;

}

 

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

按键初始化函数 

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

void Key_Init(void) 

{

rGPGUP = ((1<<11)|(1<<7)|(1<<6)|(1<<5)|(1<<3)|(1<<0)); //禁止上拉电阻

  rGPGCON = ((1<<23)|(1<<15)|(1<<13)|(1<<11)|(1<<7)|(1<<1)); //设置GPG0-3-5-6-7-11端口为中断模式 

    rINTMOD &= ~(0x1<<5); //设置(INTMOD寄存器的EINT8_23)为普通中断模式

    rEXTINT1 &= ~((0x7<<0)|(0x7<<12)|(0x7<<20)|(0x7<<24)|(0x7<<28));//设置EINT8-11-13-14-15为低电平触发 

    rEXTINT2 &= ~(0x7<<12); //设置中断触发方式的EINT19[6:4]=000为低电平触发

    rEINTMASK &= ~((1<<8)|(1<<11)|(1<<13)|(1<<14)|(1<<15)|(1<<19)); //设置外部中断屏蔽寄存器为disable

    rINTMSK  &= ~BIT_EINT8_23; //中断屏蔽寄存器相应位写入0使EINT8_23中断使能 

    /*设置ISR*/ 

    pISR_EINT8_23=(U32)key_handler; //将中断服务函数的地址传给对应的中断向量表位置

    EnableIrq(BIT_EINT8_23); //EINT8_23中断使能

}

 

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

主函数 

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

int Main(void) 

{

MMU_Init(); //初始化MMU,解决中断向量表入口地址与内存地址之间不一致问题,进行地址的重映射

Key_Init(); //按键初始化 

led_init(); //LED初始化 

return 0;

}

 

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

按键中断处理函数 

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

static void __irq key_handler(void) //关键字__irq用来声明该函数一个IRQ中断服务程序,

//编译器便会自动在该函数内部增加中断现场保护的代码

{

/*判断是否是按键K1产生的中断*/

    if(rINTPND==BIT_EINT8_23) //判断EININT8_23是否已经接受中断服务 

    {

ClearPending(BIT_EINT8_23); //在中断服务函数中清除相应的屏蔽寄存器(SRCPNG和INTPNG相应位写入1) 

LED_off; //关闭所有LED 

if(rEINTPEND&(1<<8)) //判断K1(EINT8)是否已经产生中断,相应EINTPEND位自动置1 

{

rEINTPEND |= 1<< 8; //写入1清除EINTPEND寄存器相应位为下次中断做准备 

LED1_on;

}

if(rEINTPEND&(1<<11))

{

rEINTPEND |= 1<< 11;

LED2_on;

}

if(rEINTPEND&(1<<13)) 

{

rEINTPEND |= 1<< 13;

LED3_on;

}

if(rEINTPEND&(1<<14)) 

{

rEINTPEND |= 1<< 14;

LED4_on;

}

if(rEINTPEND&(1<<15)) 

{

rEINTPEND |= 1<< 15;

LED1_3_on;

}

if(rEINTPEND&(1<<19)) 

{

rEINTPEND |= 1<< 19;

LED2_4_on;

}

 

}

}

关键字:mini2440  按键  中断控制  LED 引用地址:基于mini2440的按键中断控制LED(裸机代码)

上一篇:mini2440裸机程序之按键检测实验
下一篇:基于mini2440按键控制电子相册(裸机代码)

推荐阅读最新更新时间:2024-11-02 10:47

LED照明电源次级恒流电路方案总结
随着LED照明现在越来越热,作为LED的生命支柱--LED驱动电源也越来越受到人们的关注。 人说LED电源是个特殊的电源,跟普通电源有很大的不同,所以做LED电源要找专业的LED电源工程师。这种说法给LED电源蒙上了一层神秘的面纱,但作为做电源的专业人士,都知道LED电源其实没什么特别,其特点就是需要恒流限压,况且长期工作在满载情况下,所以对效率的要求比较高,有些电源由于结构尺寸的限制,对高度也有要求。 下面我就试着就目前中小功率的LED照明电源,谈谈次级恒流的一些常见的方法来一个总结,不一定很全面,也不一定很深入,不过总算能对一些初入行的工程师有些帮助。 毫不夸张的说,LED驱动电源将直接决定LED灯的可靠性与寿命;作为电源工程
[电源管理]
<font color='red'>LED</font>照明电源次级恒流电路方案总结
盘点Dialog固态LED照明新品三大技术干货
现在各个行业几乎每个环节都在谈节能环保,与生活息息相关的部分成为众矢之的,如照明。据CMSChina统计数据显示,智能照明将打开行业长期成长空间,在不考虑高附加值产品的基础上,仅2014~2015两年,智能照明行业将额外提供至少超过600亿元人民币的市场空间。智能照明趋势确立,将为LED行业打开更为广阔的成长空间,并且在未来1~2年进入快速发展期。 节能小IC 惠及大市场 在节能技术上Dialog是全球领先的半导体公司,包括高度集成化的电源管理技术、AC/DC功率转换、超低功耗音频技术、蓝牙智能等短距离无线技术、多点触控和LED固态照明。日前,Dialog在北京举办了LED照明新品发布会,Dialog企
[电源管理]
盘点Dialog固态<font color='red'>LED</font>照明新品三大技术干货
LED驱动电源拓扑原理
采用 AC-DC 电源 的LED照明 应用中,电源转换的构建模块包括二极管、开关 管(FET)、电感 及电容及电阻等分立元件 用于执行各自功能,而脉宽调制(PWM)稳压器用于控制电源转换。电路中通常加入了变压器的隔离型AC-DC电源转换包含反激、正激及半桥等拓扑结构,参见图1,其中反激拓扑结构是功率 小于30 W的中低功率应用的标准选择,而半桥结构则最适合于提供更高能效/功率密度。就隔离结构中的变压器而言,其尺寸的大小与开关频率有关,且多数隔离型LED驱动 器基本上采用“电子”变压器。   图1:常见的隔离型拓扑结构。   采用DC-DC电源的LED照明应用中,可以采用的LED驱动方式有电阻型、线性稳压器及开关稳压器等,基本
[电源管理]
<font color='red'>LED</font>驱动电源拓扑原理
LED明朗的普及趋势
     低碳节能大力倡导,LED照明风起云涌。在打造节能环保的低碳经济思路下,中国正做大半导体照明产业蛋糕。据相关机构分析,2010年,中国LED产业产值将超过1500亿元;较2008年总产值翻倍。我国是全球第一大照明光源和灯具生产国,但主要生产中低端产品,约占全球18%的市场份额。在产业链上,1LED外延片跟LED晶片约占行业70%的利润,LED应用约占10%-20%;LED封装则低于10%.     在照明市场,LED照明渗透率急速扩大。然而值得关注的是,由于LED照明颠覆传统灯具与光源分开的销售模式,加上定制程度高,在LED照明厂商成本压力吃紧之下,口袋若不够深,将无法兼顾产品品质与价格竞争力,且恐落入被并购或市场淘汰
[电源管理]
stm32快速学习6——SysTick 定时1s控制LED
设置使用外部8M晶振 设置引脚功能 设置systick为1s中断 利用systick中断就可以得到1s时间 //////////////////////////////////////////////////////////////////////////前言///////////////////////////////////////////////////////////////////////////////////////// stm32的systick通过少数的程序设置,当使用systick_config()函数之后,其载入值就是你的参数,并且自动打开中断,并将中断设为最低的优先级,将其时钟设为HCLK即系统时钟7
[单片机]
stm32快速学习6——SysTick 定时1s<font color='red'>控制</font><font color='red'>LED</font>
华灿光电苏州子公司向总公司现金分红2.8亿元
昨日,华灿光电股份有限公司发布公告称,公司近日收到华灿光电(苏州)有限公司(以下简称“苏州子公司”)的现金分红款279,337,577.75元。   华灿光电表示,苏州子公司为公司纳入合并报表范围内全资子公司, 公司持有苏州子公司100%的股份,根据其公司章程并经股东决定,以经大信会计事务所(特殊普通合伙)审计,截止2017年6月30日的未分配利润数465,562,629.59元为依据,向公司现金分红279,337,577.75元。上述利润分配将增加公司2017年度母公司报表净利润,但不增加公司2017年度合并报表净利润,因此,不会影响2017年度公司整体经营业绩。
[嵌入式]
基于STM32 MCU的太阳能-LED街灯解决方案
随着化石类能源的日益减少,以及温室气体的过度排放导致全球变暖问题越来越受到重视,人们一方面在积极开发各类可再生新能源,另一方面也在倡导节能减排的绿色环保技术。太阳能作为取之不尽、用之不竭的清洁能源,成为众多可再生能源的重要代表;而在照明领域,寿命长、节能、安全、绿色环保、色彩丰富、微型化的LED固态照明也已被公认为世界一种节能环保的重要途径。太阳能-LED街灯同时整合了这两者的优势,利用清洁能源以及高效率的LED实现绿色照明。 本文介绍的太阳能-LED街灯方案,能自动检测环境光以控制路灯的工作状态,最大功率点追踪(MPPT)保证最大太阳能电池板效率,恒电流控制LED,并带有蓄电池状态输出以及用户可设定LED工作时间等
[电源管理]
基于STM32 MCU的太阳能-<font color='red'>LED</font>街灯解决方案
LED灯带规格术语及其价格因素介绍
LED灯 带规格术语介绍 一、 LED 尺寸大小:0603、0805、1210、5050是指LED灯带上使用的发光组件——LED的尺寸大小(英制/公制), 下面是这些规格的详细介绍:   0603:换算为公制是1005,即表示LED组件的长度是1.0mm,宽度是0.5mm。行业简称1005,英制叫法是0603.   0805:换算为公制是2125,即表示LED组件的长度是2.0mm,宽度是1.25mm.行业简称2125,英制叫法是0805.   1210:换算为公制是3528,即表示LED组件的长度是3.5mm,宽度是2.8mm。行业简称3528,英制叫法是1210.   5050:这是公制叫法,
[电源管理]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved