STM8S提供2种中断管理模式:
STM8同时发生中断管理模式
在该模式下,所有的中断的中断优先级都是3级,因此它们都是不可以被中断的(除了被TLI,RESET或TRAP中断之外)。
硬件的中断优先级按如下顺序排列,从低到高的优先级是:MAIN,IT4,IT3,IT2,IT1,IT0,TRAP/TLI(同等优先级)以及RESET。
图19所示是一个同时发生中断管理模式的例子。
(图18:同时发生中断管理模式)
STM8嵌套中断管理模式
在该模式下,允许在中断子程序中响应中断。一旦一个中断的优先级被设置低于3级时该模式就立即有效。
硬件优先级从低到高按如下顺序给定,即MAIN,IT4,IT3,IT2,IT1,IT0和TRAP。
通过设定ITC_SPRx寄存器的相应的I1_x和I0_x位来配置每一个中断向量的软件优先级。I1_x和I0_x位具有和CC寄存器的I1和I0位相同的意思(见表14)。
不可以将中断优先级设为级别0(I1_x=1,I0_x=0),在这种情况下,该中断的优先级将保持为先前的值。例如:如果先前的值是CFh,然后编程的值是64h,那么结果是44h。
RESET和TRAP向量是没有软件优先级的。当两者的任何一个被响应时,CC寄存器的位I1和I0两位都被置位。
注意:在STM8中断被响应时如果位I1和I0被修改,那么设备将作如下处理:如果一个中断X仍然处在悬起状态(新的中断或者中断标志没有被清除)同时该新的优先级又比先前的优先级高的话,那么该中断X会被重新响应。否则该中断的软件优先级在下一个中断请求(X中断的IRET之后)来之前保持不变。
在中断子程序的执行过程中,执行HALT,POP CC,RIM,SIM和WFI指令会改变当前的软件优先级直到下一条IRET指令被执行或者先前提到的指令之一被执行。图20所示嵌套中断管理的例子。
---------------------------------------------------------------------------
警告:没有标志位及中断来指示堆栈发生溢出
----------------------------------------------------------------------------
向量地址 | ITC_SPRx寄存器位
|
8008h | I1_0 and I0_0 bits(1) |
800Ch | I1_1 and I0_1 bits |
… | … |
80C7h | I1_29 and I0_29 bits |
(表14向量地址映象对应软件的优先级位)
1.ITC_SPRx寄存器对应于TLI的位可以被读写,但是它们对中断处理的管理是没有作用的。
(图20:嵌套中断管理)
关键字:STM8 嵌套 中断管理
引用地址:
STM8 同时的和嵌套的中断管理
推荐阅读最新更新时间:2024-11-16 21:03
关于STM8的AFR0和AFR1使用
芯片手册中写AFR0和AFR1不能同时使用 AFR1 Alternate function remapping option 1 (2) 0: AFR1 remapping option inactive: default alternate function(1); 1: Port A3 alternate function = SPI_NSS; port D2 alternate function =TIM2_CH3. AFR0 Alternate function remapping option 0(2) 0: AFR0 remapping option inactive: Default alternate func
[单片机]
STM8单片机ADC连续扫描模式
当STM8单片机使用ADC功能读取多个通道的值时,可以使用连续模式,但是连续模式一次只能采样一个通道的值,那么如果要采样多个通道时怎么办呢?STM8提供了一个多通道连续采样扫描模式。也就是说多个通道采样时才有扫描模式,从第0通道开始依次向后扫描,扫描完成后会自动开始第二次扫描。而不像单次扫描模式那样,依次结束后ADC就会自动关闭,需要手动开启第二次扫描。连续扫描模式只需要开启一次,就会一直重复的采样,直到手动关闭,才会结束。 连续扫描模式相比单次扫描模式,在初始化的时候,只是多了一行代码,就是设置COUNT位为1. 下面开始分析要使用连续扫描模式,需要设置哪些寄存器的哪些位。 首先要设置最大的采样通道。
[单片机]
STM8串口初始化寄存器配置
//库函数配置 UART1_DeInit(); UART1_Init((u32)1000000, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO , UART1_SYNCMODE_CLOCK_DISABLE , UART1_MODE_TXRX_ENABLE); UART1_ITConfig(UART1_IT_RXNE_OR,ENABLE ); UART1_Cmd(ENABLE ); //寄存器配置 //UART1- CR1 |= 0X00; //UART1- CR3 |= 0X00; UART1- CR2 = 0X2C; UAR
[单片机]
STM8单片机ADC连续采样模式
STM8S003单片机内部ADC为12位,A/D转换的各个通道可以执行单次和连续的转换模式。 单次转换模式的意思就是,ADC每次转换一次数据后,就会停止转换,如果还需要继续转换的话,就需要手动开启第二次转换功能。 连续转换模式的意思就是每次转换结束后,系统会自动开启第二次转换,不需要手动设置第二次转换的开启,也就是说连续转换模式只需要开启一次。 ADC框图如下: ADC连续模式转换时序图如下: 通过时序图可以看出,在第2次转换完成后,第一次采样的结果才会输出,也就是结果输出比采样滞后了一个周期。 下面用代码来实现ADC的连续转换模式: #include adc.h #include main.h
[单片机]
STM8的中断系统以及外部中断详解
STM8具有最多32的中断系统,在中断的处理上类似于cortexm系列的芯片,首先是每个中断的向量都是固化在系统内部的,用户需要向相应的中断向量flash位置写入中断处理函数,其二,每个中断向量都具有可编程的优先级,共有两位优先级,两个BIT的优先级可以催化出4个优先级,具体如下 中断控制器内部有一些寄存器专门用来存放相应的中断的中断优先级,同同时,在系统内部也有一个系统寄存器CC他的第三位和第五位分别表示当前正在处理的中断的优先级 可以这样认为,中断发生的时候,系统寄存器在执行中断向量跳转的时候自动载入了相应的中断优先级到系统寄存器CC中. 中断的处理遵循先判断软件优先级后判断硬件优先级的模式,当几个中断同时发生
[单片机]
STM8与汇编语言(10)--UART应用之二
下面这个实验程序比较简单,它是在上篇基础上,增加了查询方式从UART接收一个字符的子程序。主循环中,等待接收一个字符,然后将接收到的字符再发送出去。如果与WINDOWS的超级终端相连,则键盘上按什么按键,则显示对应的字符。 同样还是利用ST的开发工具,生成一个汇编程序的框架,然后修改其中的main.asm,修改后的代码如下。 编译通过后,下载到开发板,运行程序。在PC机上运行超级终端,波特率为9600,然后从键盘上输入按键,屏幕上就显示对应的字符。 stm8/ #include mapping.inc #include STM8S207C_S.INC ; 定义堆栈空间的起始位置和结束位置 s
[单片机]
微雪电子STM8 QFP44测试座介绍
STM8专用编程座 烧写座 QFP44 0.8mm 原装进口座子 仅针对STM8的QFP44封装0.8mm的引脚间距的单片机进行烧写、测试,支持型号详见介绍 型号 STM8-QFP44 产品简介 产品用途 对STM8的QFP44封装0.8mm的引脚间距的单片机进行烧写、测试 适用型号 STM8的QFP44封装及引脚兼容的相关型号,如: STM8S105SxTxC / STM8S207SxTxC / STM8S208SxTxC 特点 1. 通过SWIM接口,可直接对相关型号进行测试、烧写 2. 晶振可更换 3. 以排针方式引出所有引脚,引脚间距为2.54mm(100mil) 规格尺寸 STM8 QFP4
[单片机]
STM8硬件线路设计基础
其实STM8可以不需要晶振跟复位电路,但是为了最小系统能够稳定运行,所以最好增加外部电路。 ● STM8复位电路设计 STM8单片机内置上电复位(POR),所以,STM8单片机可以不设外部上电复位电路,依然可以正常复位,稳定工作。若是系统需要设置按键复位电路,那么注意,STM8单片机是低电平复位,如下图,设计按键复位电路: ● STM8震荡电路设计 STM8单片机内置RC振荡电路。出厂时,未进行时钟源设置的STM8,其时钟源使用的是内部16M高速RC振荡器,然后经过8分频则是2M频率。 通过程序对寄存器的设置,可以设置MCU的内部RC振荡频率。例如:4M、8M等。不过,内置RC振荡,在一致性方面存在
[单片机]