您好、欢迎来到现金彩票网!
当前位置:彩之网 > 中断屏蔽 >

STM8 中断控制器ITC

发布时间:2019-07-22 01:54 来源:未知 编辑:admin

  ─ 所有I/O 引脚都具有外部中断能力,每一个端口都有独立的中断向量以及独立的标志。

  ● 复位向量地址0x00 8000 位于程序空间的起始部分。对于具有启动ROM的型号,ST公司把复位初始化程序固化在ROM区中。

  ● 固定的中断向量地址位于程序空间映像的高位地址段(0x00 8004 to 0x00 807C) ,其地址顺序即为硬件的优先顺序。

  中断屏蔽是通过CC寄存器的位I1 和位I0 以及设置每个中断向量( 表13) 的软件优先级的ITC_SPRx来管理的。处理流程如图所示:

  3. 根据ITC_SPRx 寄存器中的值对应的中断服务向量,CC寄存器中的位I1 和I0 被相应设置;

  4. 通过中断向量载入中断服务子程序的入口地址,接着对中断服务子程序的第一条指令取址( 参考表中断映射表 来了解向量地址的更详细情况)。

  中断服务子程序必须以IRET指令结束,该指令会把堆栈中的保存的寄存器内容出栈,同时由于运行IRET 指令,位I1 和位I0 被重新恢复,程序也恢复运行。

  2、如果几个排队的中断具有相同的软件优先级,那么最高硬件优先级的中断先响应。

  当中断请求没有立即得到响应时,该中断请求被锁存;当其软件优先级及硬件优先级均为最高的时候,该中断被处理。

  1、与软件优先级不同,每个中断的硬件优先级是唯一且互不相同的,这样就可保证一个时刻只有一个中断被唯一确定地处理。

  2、RESET, TLI 和 TRAP 这个几个中断被认为是拥有最高的软件优先级来处理。

  不可屏蔽中断不会考虑CC寄存器的I1 和I0 的状态(参见图) 。仅仅当TRAP 中断发生时候将PC, X, Y, A 和 CC 寄存器的内容压栈。相应的向量载入到PC寄存器中同时置位I1 和I0 位禁止中断(3级优先级)。

  复位中断是STM8 的软件和硬件中断的最高优先级,这也就是说在复位程序的开始所有的中断被禁止。必须通过RIM 指令来使能它们(见表)。

  对于可屏蔽中断,如果相应的中断被使能,而且如果在ITC_SPRx 寄存器的中断优先级比当前正在执行的中断(根据CC寄存器的I1 和I0 位)的优先级高的话那么就可以被响应。如果上面2个条件中 的任何一个不满足那么该中断会被锁存并保持在等待状态。

  外部中断可以用来把MCU从停机(Halt) 模式唤醒。外部中断触发方式的选择可以通过软件写控制外部中断控制寄存器(EXTI_CRx) 来实现。

  当多个连接到同一个中断向量的外部引脚中断被同时选定时候,那么他们是逻辑或的关系。

  当外部的电平触发中断被锁存后,如果该给定的电平一直保持到中断子程序结束,那么该电平信号将再次触发中断,除非在中断子程序中禁用该中断。

  当对应外设状态寄存器的中断标志位被置位,同时相应的外设控制寄存器的使能位被置位时将产生一个外设中断。

  清除一个外设中断的标准顺序是在对状态寄存器的访问后再对相关寄存器进行读或者写操作。

  仅有外部中断和另外一些特定中断使才能使处理器从停机(Halt) 模式退出(请参考表16)。

  当MCU从挂起模式唤醒时候, 如果有多个排队中断存在,那么第一个被响应的中断一定具有从挂起模式退出的能力。该选择是通过如图18所示的判断过程实现的。如果最高优先级的待相应的中断不能把设备从挂起模式唤醒的话,那么它将在后续被响应。

  如果在执行HALT指令时,有一个内部或外部中断( 例如时钟中断)发生,HALT指令会继续执行完毕,但这个中断会立刻调用唤醒进程。

  这种情况下MCU实际上是从停机(Halt) 模式被唤醒到运行模式,模式切换的延时为tWUH,详见数据手册。

  MCU的活动等级的配置是通过编程CFG_GCR 寄存器的AL位来实现。( 见1.3全局配置寄存器(CFG_GCR) )。

  该位是用来控制MCU的低功耗模式。在超低功耗的应用中,MCU大部分时间是运行在WFI/Halt模式中,仅在为执行特别任务的时候被唤醒( 通过中断) 。一些重复的任务可以直接在一个ISR( 中断服务子程序) 执行完成而不需要返回到主程序。为了处理这样情况,用户可以在进入低功耗模式( 通过执行WFI/HALT指令) 之前置位AL位,之后中断子程序返回之后就直接回到低功耗模式。由于相关寄存器保存只是在第一次中断会进行所以减少了中断服务程序运行的时间。

  在一些非常简单的应用中所有的操作都可以只在ISR 中执行。对于一些更复杂的任务,中断子程序要判断是否要启动主程序,可以通过重设AL的简单方式来实现。

  例如:一个应用需要通过自动唤醒功能来每隔50ms唤醒一次来检测一些引脚/传感器/ 按键的状态。如果这些引脚大部分时间是不工作的,那么MCU可以直接回到低功耗模式而不需要运行主程序的。如果其中之一的引脚处于工作状态,那么ISR 将要进行相应判断,通过重设AL位来启动主程序。

  在该模式下,所有的中断的中断优先级都是3 级,因此它们都是不可以被中断的( 除了被TLI,RESET或TRAP 中断之外)。

  在该模式下,允许在中断子程序中响应中断。一旦一个中断的优先级被设置低于3 级时该模式就立即有效。

  通过设定ITC_SPRx 寄存器的相应的I1_x 和I0_x 位来配置每一个中断向量的软件优先级。I1_x 和I0_x 位具有和CC寄存器的I1 和I0 位相同的意思(见表)。

  不可以将中断优先级设为级别0(I1_x=1, I0_x=0),在这种情况下,该中断的优先级将保持为先前的值。例如:如果先前的值是CFh ,然后编程的值是64h ,那么结果是44h 。

  RESET 和 TRAP 向量是没有软件优先级的。当两者的任何一个被响应时,CC寄存器的位I1 和I0 两位都被置位。

  在中断被响应时如果位 I1 和 I0 被修改,那么设备将作如下处理: 如果一个中断 X 仍然处在悬起状态(新的中断或者中断标志没有被清除)同时该新的优先级又比先前的优先级高的话,那么该中断 X 会被重新响应。否则该中断的软件优先级在下一个中断请求( X中断的IRET之后)来之前保持不变。

  在中断子程序的执行过程中,执行 HALT, POP CC, RIM , SIM 和 WFI指令会改变当前的软件优先级直到下一条IRET 指令被执行或者先前提到的指令之一被执行。 。

  1. ITC_SPRx 寄存器对应于TLI的位可以被读写,但是它们对中断处理的管理是没有作用的。

  为了产生中断,相应的GPIO端口必须被配置为中断使能的输入口,详细内容请参考GPIO章节的

  中断的触发方式由外部中断控制寄存器1(EXTI_CR1) 和外部中断控制寄存器2(EXTI_CR2) 所配置

http://ando2.com/zhongduanpingbi/245.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有