历史上的今天
返回首页

历史上的今天

今天是:2025年01月11日(星期六)

2020年01月11日 | 初始化中断按键(2440)

2020-01-11 来源:eefocus

以下是主要代码:

1.led.c

#define GPBCON (volatile unsigned long*)0x56000010
#define GPBDAT (volatile unsigned long*)0x56000014

void led_init()
{   
    *(GPBCON) = 0x400;
}

void led_off()
{
    *(GPBDAT) = 0x7ff;
}

void led_on()
{
    *(GPBDAT) = 0x0;
}

2.interrupt.c

/*interrupt registes*/
#define SRCPND              (volatile unsigned long *)0x4A000000
#define INTMOD              (volatile unsigned long *)0x4A000004
#define INTMSK              (volatile unsigned long *)0x4A000008
#define PRIORITY            (volatile unsigned long *)0x4A00000c
#define INTPND              (volatile unsigned long *)0x4A000010
#define INTOFFSET           (volatile unsigned long *)0x4A000014
#define SUBSRCPND           (volatile unsigned long *)0x4A000018
#define INTSUBMSK           (volatile unsigned long *)0x4A00001c

#define EINTMASK            (volatile unsigned long *)0x560000a4
#define EINTPEND            (volatile unsigned long *)0x560000a8

void init_irq()
{

    // 在EINTMASK寄存器中使能它们
    *(EINTMASK) &= (~(1<<8)) & (~(1<<11)) & (~(1<<13)) & (~(1<<14));

    // EINT8_23使能
    *(INTMSK)   &= ~(1<<5);
    
    __asm__( 
    /*开中断*/  
    "mrs r0,cpsrn"
    "bic r0, r0, #0x80n"
    "msr cpsr_c, r0n"            
    : 
    : 
  );
}

void handle_int()
{
    /*读取产生中断的源*/
    unsigned long value = *(EINTPEND) & ((1<<8)|(1<<11)|(1<<13)|(1<<14));
    
    switch(value) 
    {
        case (1<<8): //K1
            led_on();
            break;
        
        case (1<<11): //K2
            led_off();
            break;
        
        case (1<<13): //K3
            led_on();
            break;
        
        case (1<<14): //K4
            led_off();
            break;
        
        default:
            break;
    }
    
    /* 中断清除 相应的位 1 */
    *(EINTPEND) = value;
    
    *(SRCPND) = 1 << 5;
    *(INTPND) = 1 << 5;
}

3.button.c

#define GPGCON  (volatile unsigned long *)0x56000060

/*
 * K1,K2,K3,K4对应GPG0、GPG3、GPG5、GPG6
 */
#define GPG0_int     (0x2<<(0*2))
#define GPG3_int     (0x2<<(3*2))
#define GPG5_int     (0x2<<(5*2))
#define GPG6_int     (0x2<<(6*2))

#define GPG0_msk    (3<<(0*2))
#define GPG3_msk    (3<<(3*2))
#define GPG5_msk    (3<<(5*2))
#define GPG6_msk    (3<<(6*2))

void button_init()
{   
        *(GPGCON) &= ~(GPG0_msk | GPG3_msk | GPG5_msk | GPG6_msk);
    *(GPGCON) |= GPG0_int | GPG3_int | GPG5_int | GPG6_int;
}

@以上代码仅供参考。

/******************************** Stay hungry, Stay foolish. @Rocky ********************************/

推荐阅读

史海拾趣

ABB Group公司的发展小趣事

ABB Group是一家全球性的工程技术公司,提供电力和自动化技术解决方案。以下是该公司发展的五个相关故事:

  1. 公司成立和早期发展: ABB Group的前身可以追溯到1883年,当时由瑞士的Brown, Boveri & Cie (BBC)和瑞典的ASEA公司合并成立。这个合并创造了一个跨国电气工程公司,专注于发电机、电气传动和电力系统的设计和制造。该公司成立后迅速扩展了国际业务,并在世界各地建立了分支机构和生产基地。

  2. 技术创新和产品多样化: ABB Group一直致力于技术创新,并不断推出新产品和解决方案,以满足客户的需求。公司在电力输送、工业自动化、机器人技术等领域拥有丰富的经验和专业知识,为各种行业提供了全面的电力和自动化解决方案。

  3. 国际化战略和全球扩张: ABB Group通过收购、合并和战略合作,加速了在全球范围内的扩张。公司在100多个国家设有分支机构和办事处,形成了覆盖全球的销售和服务网络。这种国际化战略使ABB能够更好地满足不同国家和地区客户的需求。

  4. 可持续发展和环保责任: ABB Group致力于推动可持续发展和环保责任,在产品设计、生产和运营过程中注重减少能源消耗和减排。公司积极推动清洁能源和智能电网的发展,为全球的环境保护和可持续发展做出贡献。

  5. 未来展望和发展方向: ABB Group将继续致力于技术创新和市场拓展,加强在电力和自动化领域的领先地位。公司将加大在数字化技术和人工智能领域的投入,推动工业智能化和数字化转型,为客户提供更智能、更高效的解决方案。

康龙(CONCRAFT)公司的发展小趣事

面对电子行业的快速变化和发展趋势,康龙公司积极拥抱数字化转型。公司引入了先进的ERP系统和数字化工具,实现了从供应链、生产管理到财务管理的全面信息化。这不仅提高了公司的运营效率和管理水平,还为公司的产业升级和未来发展奠定了坚实基础。

Component Research Co公司的发展小趣事

随着公司规模的扩大,Component Research Co面临着管理上的挑战。为了提升运营效率,公司引入了一系列创新管理措施,如引入先进的生产管理系统、优化供应链管理、推行员工激励机制等。这些措施的实施使得公司的运营效率得到了显著提升,产品质量也得到了更好的保障。

Cramer公司的发展小趣事

在智能家居领域,Cramer公司也展现出了强大的创新能力。他们推出了一款智能家居控制系统,该系统可以通过手机APP远程控制家中的电器设备。为了实现这一功能,Cramer公司投入了大量资源进行技术研发,并与多家家居品牌达成了战略合作协议。这款产品的推出,使得Cramer公司在智能家居市场上占据了一席之地。

Eurosil Electronics Ltd公司的发展小趣事

Eurosil Electronics Ltd公司成立于XXXX年,由一群热衷于电子科技研发的工程师创立。在成立初期,公司专注于半导体材料的研究与开发,致力于提高半导体的性能与稳定性。经过数年的努力,Eurosil成功研发出一种新型半导体材料,具有更低的能耗和更高的可靠性,这一技术突破为公司赢得了业界的广泛认可,也奠定了其在电子材料领域的重要地位。

FUJITSU(富士通)公司的发展小趣事

作为一家有社会责任感的企业,Eurosil始终关注社会公益事业。公司积极参与各种公益活动,如捐赠教育设施、支持贫困地区发展等。通过这些活动,Eurosil不仅回馈了社会,也提升了企业的社会形象和品牌价值。同时,公司还鼓励员工参与志愿服务活动,培养员工的公益意识和社会责任感。

问答坊 | AI 解惑

求梅兰日兰UPS中文使用说明书操作手册

求梅兰日兰UPS中文使用说明书 请问哪位师傅手里有梅兰日兰UPS中文使用说明书啊,帮忙给传一下,或者给个网址也行啊,UPS是4.2KW、6KVA,我先谢谢啦!…

查看全部问答>

8051f320上位机编写?

1.怎么向8051f320的usb口发送信号? 我是指pc端的软件编写。 320是会被识别为hid类吗? 用到的api主要有哪些呢?vb vc 的都行啊 最好是vb 2。我要用320实现usb信号转变成串口信号的功能,主要为了解决笔记本缺少com口的问题。方法是从usb接受数据 ...…

查看全部问答>

谁能救命--关于Mplayer中Demuxer处理流程

哪为江湖大虾有研究过播放器Mplayer的原代码啊,特别是它Demux是如何处理的,最好能讲讲Mplayer的主处理函数,和详细的Demux过程?小弟不胜感激!…

查看全部问答>

请教关于伺服电机精度的问题

小弟请问大家有关于伺服电机的问题.有一位做真空镀膜的客户问到我伺服电机的转矩精度和线性度的参数.请问各位高手转矩精度和线性度是什么意义?…

查看全部问答>

stx-rlink要什么价格?有转让的吗,个人用

                                  …

查看全部问答>

Protues-ATmega8仿真

适用于初学者对定时/计数器,串口通信和LED 数码管的学习 [ 本帖最后由 ydw621 于 2011-4-23 12:27 编辑 ]…

查看全部问答>

急,怎么用595芯片驱动一个四位的数码管

本帖最后由 paulhyde 于 2014-9-15 09:28 编辑 …

查看全部问答>

zb_BindDevice失败

// Find and bind to a collector device     zb_BindDevice( TRUE, SENSOR_REPORT_CMD_ID, (uint8 *)NULL );   如果终端设备的父地址为0,即协调器,可以绑定成功   如果终端设备的父地址非0,即路由器,通过 ...…

查看全部问答>