第9课,按键中断和定时器中断

本文详细介绍了在ARM处理器上如何设置和处理按键中断及定时器中断。首先,针对按键中断,从配置中断源、中断控制器到开启CPU中断进行了详细讲解,涉及EXTINTX、EINTMASK等寄存器的配置。其次,阐述了定时器的工作原理,包括时钟信号、计数器减少、中断触发条件,并提供了设置定时器的步骤。整个过程结合了具体的寄存器操作和代码示例。
摘要由CSDN通过智能技术生成

注:以下内容学习于韦东山老师arm裸机第一期视频教程


一.中断的处理

    1.1 中断初始化

        1.1.1 设置中断源,让他能够发出中断信号
      a.以按键中断为例,按键原理图如下,4个按键分别接到EINT0,EINT2,EINT11,ENIT19对应GPF0,GPF2,GPG3,GPG11

            b.配置GPFCON,GPGCON使得GPF0,GPF2,GPG3,GPG11被配置为外部中断引脚
            c.配置EXTINTX寄存器设置中断触发方式为双边沿触发
                其中EXTINT0寄存器对应EINT0-EINT7
                EXTINT1寄存器对应EINT8-EINT15
                EXTINT2寄存器对应EINT16-EINT23
            d.配置EINTMASK寄存器允许EINT0,EINT2,EINT11,ENIT19向中断控制器发生中断
                其中EINT0-EINT3的中断信号不需要配置,可以直接到达中断控制器
            

           相关码如下:   

                /* 初始化按键, 设为中断源 */
                void key_eint_init(void)
                {
                    /* 配置GPIO为中断引脚 */
                    GPFCON &= ~((3<<0) | (3<<4));
                    GPFCON |= ((2<<0) | (2<<4));   /* S2,S3被配置为中断引脚 */

                    GPGCON &= ~((3<<6) | (3<<22));
                    GPGCON |= ((2<<6) | (2<<22));   /* S4,S5被配置为中断引脚 */
                    

                    /* 设置中断触发方式: 双边沿触发 */
                    EXTINT0 |= (7<<0) | (7<<8);     /* S2,S3 */
                    EXTINT1 |= (7<<12);             /* S4 */
                    EXTINT2 |= (7<<12);             /* S5 */

                    /* 设置EINTMASK使能eint11,19 */
                    EINTMASK &= ~((1<<11) | (1<<19));
                }
        1.1.2 设置中断控制器,让他可以向CPU发出中断

                根据下图进行相关的配置

                
                a.多个中断产生经过优先级只会有一个通知CPU,可以读取INTPND寄存器来判断是哪一个中断产生了
                  bit0-eint0    1-中断产生,需要进行清除
                  bit2-eint2
                  bit5-eint8-23

                b.Priority表示中断优先级,暂时不设置
                c.MODE用来设置某个中断为快中断或者普通的中断,我们使用默认值,发出IRQ信号
                d.需要设置MASK寄存器,某一位被设置为1,会屏蔽掉这个中断
                  bit0-eint0    
                  bit2-eint2
                  bit5-eint8-23
                
                e.对于中断源,有的中断源包括子中断源,例如串口中断包括接受中断,发送中断和出错的中断
                  假设串口0产生了TX0子中断SUBSRCPND寄存器的某一位就会被置1,然后进行过滤,通过SUBMASK进行处理,
                  SUBMASK寄存器每一位对应一子中断源,如果我们将这里面的某一位置1,就会过滤掉这一位对应的中断
                  
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值