《天祥ARM视频第3讲》由会员分享,可在线阅读,更多相关《天祥ARM视频第3讲(14页珍藏版)》请在金锄头文库上搜索。
1、主讲主讲:冯冯 坤坤出品出品:天祥电子天祥电子网址网址: www.tx-学学ARM和学单片机一样简单和学单片机一样简单一一、S3C444B0X I/O口口二、中断的处理二、中断的处理学学ARM和学单片机一样简单和学单片机一样简单第三讲:第三讲:学学ARM和学单片机一样简单和学单片机一样简单 两个两个8位输入输出端口(位输入输出端口(PortD和和PortG)两个两个9位输入输出端口(位输入输出端口(PortE和和PortF) 一个一个10位输出端口(位输出端口(PortA)一个一个11位的输出端口(位的输出端口(PortB)一个一个16位输入输出端口(位输入输出端口(PortC)S3C44B0
2、X有有71个通用可编程多功能个通用可编程多功能输入输出引脚,可分为以下输入输出引脚,可分为以下7类端口类端口:学学ARM和学单片机一样简单和学单片机一样简单 每个端口都可以通过软件设置来满足各种各样每个端口都可以通过软件设置来满足各种各样的系统设置和设计要求。每个端口的功能通常的系统设置和设计要求。每个端口的功能通常都要在主程序开始被定义。如果一个引脚的多都要在主程序开始被定义。如果一个引脚的多功能没有使用,那么这个引脚将被设置为功能没有使用,那么这个引脚将被设置为I/O端端口。在引脚配置以前,需要对引脚的初始化状口。在引脚配置以前,需要对引脚的初始化状态进行设定来避免一些问题的出现。态进行设
3、定来避免一些问题的出现。学学ARM和学单片机一样简单和学单片机一样简单二、中断处理二、中断处理学学ARM和学单片机一样简单和学单片机一样简单l中断源中断源 外界有很多很多的中断源,外界有很多很多的中断源,S3C44B0X用一个中断用一个中断控制器来管理各种原因产生的中断。控制器来管理各种原因产生的中断。 如下图如下图: 学学ARM和学单片机一样简单和学单片机一样简单l当外部中断源产生中断时当外部中断源产生中断时,他会触发与中断控制器的那根信他会触发与中断控制器的那根信号线号线, 中断控制器收到这个信号后会检查一下这个中断是中断控制器收到这个信号后会检查一下这个中断是否被允许和是否被屏蔽否被允许
4、和是否被屏蔽,如果没有的话如果没有的话,就给她排一个处理就给她排一个处理的优先级的优先级,当轮到这个中断时当轮到这个中断时,触发触发ARM的中断信号通知的中断信号通知ARM内核内核.然后然后ARM内核就会去访问中断向量内核就会去访问中断向量表表. lARM要求异常向量表必须放置在从要求异常向量表必须放置在从0x0地址开始、地址开始、 连续连续84字节的空间内,每当一个中断发生后,处理器会自动字节的空间内,每当一个中断发生后,处理器会自动跳转到从跳转到从0x0地址开始的异常中断矢量表中的某个位置地址开始的异常中断矢量表中的某个位置(由异常类型来确定)读取指令然后运行(由异常类型来确定)读取指令然
5、后运行. 学学ARM和学单片机一样简单和学单片机一样简单 中断处理模式中断处理模式 lS3C44B0X的中断控制器支持两个中断处理模式的中断控制器支持两个中断处理模式: 1、普通中断模式、普通中断模式(NON-VECTORED INTERRUPT MODE) 2、向量中断模式、向量中断模式(vectored interrupt mode) 我们可我们可 以通过配置中断控制寄存器以通过配置中断控制寄存器学学ARM和学单片机一样简单和学单片机一样简单INTCON(0x01E00000)选择使用那一个模式选择使用那一个模式: INTCON2: This bit disables/enables ve
6、ctor modefor IRQ 1: = Non-vectored interrupt mode 0: = Vectored interrupt mode 下面代码可以配置为向量中断模式下面代码可以配置为向量中断模式 INTCON=0x1不同的中断模式会有不同的处理方式不同的中断模式会有不同的处理方式. 如图所示如图所示:学学ARM和学单片机一样简单和学单片机一样简单 普通中断模式普通中断模式:学学ARM和学单片机一样简单和学单片机一样简单 向量中断模式向量中断模式 :学学ARM和学单片机一样简单和学单片机一样简单 l和向量中断模式比较和向量中断模式比较, 非向量中断多运行了一段非向量中断多
7、运行了一段IsrIRQ代码来判断中断源代码来判断中断源,计算中断服务程序的起计算中断服务程序的起始地址始地址lBOOT为啥要这样作啊为啥要这样作啊?学学ARM和学单片机一样简单和学单片机一样简单 l因为所有的非向量中断发生时因为所有的非向量中断发生时,都跳到了都跳到了0x18处处: lb HandlerIRQ lBOOT不知道究竟发生了那个中断不知道究竟发生了那个中断,所以为了找到所以为了找到准确的中断服务程序准确的中断服务程序,必须要用点功夫计算一下必须要用点功夫计算一下. 学学ARM和学单片机一样简单和学单片机一样简单 lI_ISPR register记录了当前的中断记录了当前的中断,所以所以BOOT在在IsrIRQ代码中借用代码中借用I_ISPR register和和BOOT程序中程序中的数据段定义成功地获得中断服务程序的地址的数据段定义成功地获得中断服务程序的地址. lIsrIRQ通过分析通过分析I_ISPR register 来判断中断源来判断中断源,然然 后根据中断源算出中断服务程序的起始地址后根据中断源算出中断服务程序的起始地址. l注注:I_ISPR 记录了当前的中断源记录了当前的中断源