历史上的今天

今天是:2024年11月16日(星期六)

2019年11月16日 | ARM历程四-LCD

发布者:数据舞者 来源: 51hei关键字:ARM  LCD  S3C2440 手机看文章 扫描二维码
随时随地手机看文章

    离上次真正写历程已经有10天的时间了。国庆嘛,自己给自己放了几天假——耍耍游戏下下棋什么的。


    其实这次写触屏的驱动和对ARM中中断的过程的了解也花了不少时间和脑力。

我就简单分享一下CPU执行某个中断的条件吧,也是我自己的理解,如果有错还请大家指正(以IRQ中断为例吧):

    

  在程序状态寄存器中(CPSR寄存器)i 位为IRQ中断禁止位,若这一位置1那么所有的IRQ中断都不会被CPU响应,如果这一位被清0,CPU也不一定会响应某一个或某些中断(就像是一个总开关)。所以,要想让CPU执行IRQ中断,CPRS中的i位必须要清0!


  在2440的CPU中还有两个中断屏蔽寄存器:INTMSK(中断屏蔽寄存器)和INTSUBMSK(子中断屏蔽寄存器)。如果相应的屏蔽位置1,寄存器指出某个中断无效。如果INTMSK 的一个中断屏蔽位是0,中断将被正常的服务。


    2440一共有60个中断源,某些中断源又有N个子中断,如:INT_UART0中断,它下面就还有INT_RXD0,INT_TXD0,INT_ERR0三个了中断源。要让CPU执行INT_RXD0的中断服务就要让INTMSK和INTSUBMSK中对应位清0!


    有这么多的中断源,那么CPU中怎么知道那个中断源发生中断了呢?原来在主函数中有这么一句:pISR_ADC = (int)AdcTsAuto; AdcTsAuto是中断服务函数的函数名!pISR_ADC在2440addr.h中定义了的(看最后一行):

#define pISR_EINT0        (*(unsigned *)(_ISR_STARTADDRESS+0x20))

#define pISR_EINT1        (*(unsigned *)(_ISR_STARTADDRESS+0x24))

#define pISR_EINT2        (*(unsigned *)(_ISR_STARTADDRESS+0x28))

#define pISR_EINT3        (*(unsigned *)(_ISR_STARTADDRESS+0x2c))

#define pISR_EINT4_7    (*(unsigned *)(_ISR_STARTADDRESS+0x30))

#define pISR_EINT8_23    (*(unsigned *)(_ISR_STARTADDRESS+0x34))

#define pISR_CAM        (*(unsigned *)(_ISR_STARTADDRESS+0x38))        // Added for 2440.

#define pISR_BAT_FLT    (*(unsigned *)(_ISR_STARTADDRESS+0x3c))

#define pISR_TICK        (*(unsigned *)(_ISR_STARTADDRESS+0x40))

#define pISR_WDT_AC97        (*(unsigned *)(_ISR_STARTADDRESS+0x44))//Changed to pISR_WDT_AC97 for 2440A 

#define pISR_TIMER0         (*(unsigned *)(_ISR_STARTADDRESS+0x48))

#define pISR_TIMER1         (*(unsigned *)(_ISR_STARTADDRESS+0x4c))

#define pISR_TIMER2        (*(unsigned *)(_ISR_STARTADDRESS+0x50))

#define pISR_TIMER3        (*(unsigned *)(_ISR_STARTADDRESS+0x54))

#define pISR_TIMER4        (*(unsigned *)(_ISR_STARTADDRESS+0x58))

#define pISR_UART2        (*(unsigned *)(_ISR_STARTADDRESS+0x5c))

#define pISR_LCD        (*(unsigned *)(_ISR_STARTADDRESS+0x60))

#define pISR_DMA0        (*(unsigned *)(_ISR_STARTADDRESS+0x64))

#define pISR_DMA1        (*(unsigned *)(_ISR_STARTADDRESS+0x68))

#define pISR_DMA2        (*(unsigned *)(_ISR_STARTADDRESS+0x6c))

#define pISR_DMA3        (*(unsigned *)(_ISR_STARTADDRESS+0x70))

#define pISR_SDI        (*(unsigned *)(_ISR_STARTADDRESS+0x74))

#define pISR_SPI0        (*(unsigned *)(_ISR_STARTADDRESS+0x78))

#define pISR_UART1        (*(unsigned *)(_ISR_STARTADDRESS+0x7c))

#define pISR_NFCON        (*(unsigned *)(_ISR_STARTADDRESS+0x80))        // Added for 2440.

#define pISR_USBD        (*(unsigned *)(_ISR_STARTADDRESS+0x84))

#define pISR_USBH        (*(unsigned *)(_ISR_STARTADDRESS+0x88))

#define pISR_IIC        (*(unsigned *)(_ISR_STARTADDRESS+0x8c))

#define pISR_UART0        (*(unsigned *)(_ISR_STARTADDRESS+0x90))

#define pISR_SPI1        (*(unsigned *)(_ISR_STARTADDRESS+0x94))

#define pISR_RTC        (*(unsigned *)(_ISR_STARTADDRESS+0x98))

#define pISR_ADC        (*(unsigned *)(_ISR_STARTADDRESS+0x9c))


当程序发生中断的时候,程序指针就会跳转到相应的地址执行程序,此地址中再存放一条跳转到中断服务程序的指令。(如果在中断服务程序里面查询SUBSRCPND中对应位的情况就可以判断中哪一个子中断源发生了中断)(个人理解,仅供参考)


关键字:ARM  LCD  S3C2440 引用地址:ARM历程四-LCD

上一篇:ARM历程九-ARM中断
下一篇:最后一页

推荐阅读

集微网消息,11月15日,比特币的价格在前一日跌破6000美元大关后落在了5349美元左右,在多个交易平台最高跌幅达15%。5349美元是比特币的价格在逼近2万美元后跌落的最低点,较峰值下跌了约70%。        这一次的跌价或与国际货币基金组织IMF总裁拉加德近日的言论有关,11月13日,拉加德在出席新加坡金融科技节时发言指出,应当考虑发行数字货币的可...
前言: 今天我们来学习看门狗的配置与函数,看门狗可以有效解决程序的跑飞,在使用过程中比较常见,是防止芯片故障的有效外设,我们一起来学习下HAL库 STM32CubeMX的独立看门狗,靠窗看门狗的使用。本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用所用工具:1、芯片: STM32F407ZET62、STM32CubeMx软件3、IDE: ...
尽管Pro系列iPhone的价格高达万元,但苹果仍有一些相对“便宜”的手机在售,比如3299元的iPhone SE 2、官降到3999元的iPhone XR等。来自Digitimes的报道称,苹果还在规划最快明年推出新的中端定位手机,定价更便宜,以在中国市场、印度市场等与小米、OPPO、vivo等品牌竞争。想要降低零售价,成本肯定不能高,所以苹果有意拓宽供应链厂商。文章透露,华...
今年的高通骁龙峰会已经定在11月30日开幕,算上时差,万众期待的新一代处理器应该会在12月1日发布。  此前,外界多用“骁龙898”来指代新一代骁龙旗舰U,和去年的骁龙888“一路发发发”对应。不过,按照三位数的命名习惯,骁龙8系眼看也到了尽头,那么高通到底如何想呢?  知名博主@数码闲聊站 给出消息“sm8450正式命名可能大概也许是新一...

史海拾趣

问答坊 | AI 解惑

电噪声对控制系统的影响

当控制系统在高量电子噪音的影响下,其可靠性会有所降低,但是采用适当的电源和接地方式能将这种影响降至最低。     系统中的各种元器件会不同程度的受到电噪音的影响。以下是系统调试过程中可能出现的一些情况:     · 合 ...…

查看全部问答∨

单片机P80C592

有哪位用过单片机P80C592做过CAN总线节点的吗?我是用它做双CAN总线冗余设计.恳求高手指点一下它里面的关于CAN控制器的四个寄存器的编程.谢谢!…

查看全部问答∨

单片机

#include "reg51.h" #include "intrins.h" sbit p27=P2^7;  //数码管位控制口 p2.7~p2.4 sbit p26=P2^6;   //P0 段控制 sbit p25=P2^5; sbit p24=P2^4; sbit p23=P2^3;   //灯控制 sbit p10=P1^0;// ...…

查看全部问答∨

CE下XML跟XAML有什么区别?解析XML/XAML文件的比较好用的类/库有那些?

CE下XML跟XAML有什么区别?解析XML/XAML文件的比较好用的类/库有那些?…

查看全部问答∨

请问怎么在evc中实现vc上的CCheckListBox

现在需要一个带复选框的列表框,在vc可以用CCheckListBox,那么在evc中应该怎么实现呢?…

查看全部问答∨

关于直流电机的驱动?

有谁有小直流电机驱动电路图和程序??…

查看全部问答∨

怎么制作三线制的串口线??

各位牛人,请教一下,我要做一条三线制的串口线,应该怎么做?需要什么材料和设备?我看了一下资料,对什么是三线制都没有头绪啊.…

查看全部问答∨

求直流升压电路

  本人需要一个由9V直流升压到14V直流的电路.   各位大侠,帮忙啊! 给个网址也行,当然,能直接教就更好了!!   先谢谢了!…

查看全部问答∨

wince下系统声道设置方法?

系统音量设置我已经解决了,但是没有找到系统声道设置的函数 请问怎么设置系统的声道!谢谢…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

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

更多每日新闻

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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