zoukankan      html  css  js  c++  java
  • key中断

    1 中断,很短的时间过去,然后回来。
    2 信号,软中断,而中断属于硬中断。
    3 实时内核,和分时内核。
    4 同步,预先知道发生,异步,预先不知道要发生,中断属于异步。
    5 arm一次执行一个中断。
    6 irq中断,2现在内核支持这个,fiq,快速中断请求。
    7 问题:两个中断同时发生?
    更具优先级,一个一个执行,一个执行完后,看PND里边还有中断没有。可以设置的优先级有32个,级联中断的发生顺序是固定的。
    8 puts和gets不能同时,因为有两个while循环。
    9 SRCPND,SUBSRCPDN,EINTPEND,这3个都是只要有中断发生就自动至1;INTPND里边只能有一个为 1.
    10 INTMOD判IRQ,还是fiq
    11 60个中断源,0~31号中断。
    12 屏蔽0中断,有一种方式,INTMASK
    屏蔽8中断,也是只有一种方式,EINTMASK;
    13 s3c2440中的ADC和UART中属于片内级联,TIMER LCD属于一级中断,而2410中则不是,正好相反。
    14 问题对于寄存器打的清0
    void clear_srcpnd(int eintnum)
    {
    INTERRUPT.SRCPND |= (0x1<<eintnum);
    }

    void clear_intpnd(void)
    {
    INTERRUPT.INTPND = INTERRUPT.INTPND;
    }

    INTPND
    INTPND Bit Description Initial State(默认状态)
    INT_ADC [31] 0 = Not requested, 1 = Requested 0
    INT_RTC [30] 0 = Not requested, 1 = Requested 0
    INT_SPI1 [29] 0 = Not requested, 1 = Requested 0
    INT_UART0[28] 0 = Not requested, 1 = Requested 0
    INT_IIC [27] 0 = Not requested, 1 = Requested 0
    INT_USBH [26] 0 = Not requested, 1 = Requested 0
    这个寄存器的默认状态时0,没有命令,当有中断发生时,对应的位变1,而当你给他1时,他就行一个命令,这个命令就是清0.(相当于自动,置1,然后你在给他赋一次1,他就变0了,只能这样理解了) 15 只有 INTPND只可能出去一个位的变化,其他不行;所以清0的时候只有他可以自己给就行了。

    16 INTMOD选择irq,fiq.
    17 INTOFFSET属于方便型的寄存器,为了INTPND的方便,所以他是直接变化的不需要判断。
    18 外部中断EXTINT1和EXTMASK放到9章的IO里边。
    19 EXTINT0设置出发的方式,中断触发的方式一共有5中,低电平高电平,上升沿,下降沿,双边沿
    EXTINT1,EXTINT2,因为3位控制一个触发方式,不够用,需要3个。
    20 问题如果外部中断8设置为irq,那么9呢?
    一定也是irq, 21 CPU有7张脸,就是异常向量表。
    22 按键中断的执行流程。
    GPGCON
    EXTINT1 选择触发方式。这里有个过滤的寄存器,(就是为了防止外部中断的颤抖,如果有过滤的电容,那么设置的时候多设置 上面的那一位)
    EXTMASK 外部中断使能。
    INTMSK 中断使能
    INTMOD 选择中断的方式irq,fiq(其实默认也行,害怕其他人改了)
    23 start.s中
    复位后到系统模式。
    彼sp非彼SP,sp债地址。
    irqhandle 头两行保护现场,最后一行恢复。
    24 如果串口不初始化的情况下,用puts函数,的话,会出现一系列不能定位的编译不过去的库错误。 25 注意 SRCPND;INTMOD;INTMSK;INTPND;INTOFFSET;SUBSRCPND;INTSUBMSK;
    EINTMASK;EINTPEND;EXTINT1;(外部中断的MASK,有A,PEND有E)。
    26 大部分的设备都支持中端和轮询,时间特别的短的时候轮询比中端要好。
    27 中端特性,异步和实时。
    28 问题中端能进入死循环么? 不能;
    29 寄存器内部,SUBSRCPND,
    INTSUBMSK

  • 相关阅读:
    Android Touch事件相关源码【Android SourceCode 2.3.6】
    使用方式比较优雅的代码集合
    Android系统中是否开启定位及定位模式的判断
    Android中软键盘展示、EditText焦点获取及windowSoftInputMode属性探究
    删除rz上传失败乱码的文件
    linux mysql 操作命令
    linux下端口被占用
    linux环境搭建记录
    ibatis 批量插入数据
    jQuery id模糊 选择器 批量处理
  • 原文地址:https://www.cnblogs.com/coding4/p/5604751.html
Copyright © 2011-2022 走看看