STM8S的中断由中断控制器(ITC)控制。STM8所有IO都支持中断,分为PA~PE 5个组,每组IO对应一个中断服务函数(也就是每组IO只有一个向量)。STM8没有专门的中断状态寄存器,所以只能通过刚进入中断就读取IDR来判断,不过在某些情况下,此种方法就不好用了,所以在设计的时候就要考虑清楚,是不是会冲突.最好把有冲突的中断放到不同的组。
STM8的外部中断采用软件优先级+硬件优先级的控制方法,来控制优先级分组.软件优先级优先于硬件优先级。硬件优先级由向量号确定,向量号越小,优先级越高如下面图中断映射,中断向量表。
STM8软件优先级设置可以分为4个等级(0~3),实际上可设置的就三个等级:1~3。优先级顺序:0<1<2<3,3的优先级最高,高优先级的中断可以打断低优先级的中断
多个中断同时发生:在软件优先级相同的情况下,由硬件优先级决定谁先响应.但是硬件优先级不可打断。也就是相同软件优先级的中断,硬件优先级低的中断在执行了...此时来一个硬件优先级高的中断是不可以打断低优先级的中断的。STM8还有个TLI外部中断,这个优先级可以打断软件优先级为3的中断,TLI的优先级不可设置.(基本就是最高级别了,除了RESET)。
总结:同时中断看硬件优先级(向量表)
嵌套中断的时候,应该看软件优先级。(3是最高级)
注意:
设置优先级之前必须关闭中断,否则会导致hard fault。
reference manual中有如下描述,MAIN, IT4, IT3, IT2, IT1, IT0, TRAP/TLI (same priority), and RESET但是不知道IT4等代表什么含义
关键字:STM8S103 中断优先级 设置
引用地址:
STM8S103之中断优先级设置
推荐阅读最新更新时间:2024-10-26 10:41
STM8S103之中断优先级设置
STM8S的中断由中断控制器(ITC)控制。STM8所有IO都支持中断,分为PA~PE 5个组,每组IO对应一个中断服务函数(也就是每组IO只有一个向量)。STM8没有专门的中断状态寄存器,所以只能通过刚进入中断就读取IDR来判断,不过在某些情况下,此种方法就不好用了,所以在设计的时候就要考虑清楚,是不是会冲突.最好把有冲突的中断放到不同的组。 STM8的外部中断采用软件优先级+硬件优先级的控制方法,来控制优先级分组.软件优先级优先于硬件优先级。硬件优先级由向量号确定,向量号越小,优先级越高如下面图中断映射,中断向量表。 STM8软件优先级设置可以分为4个等级(0~3),实际上可设置的就三个等级:1~3。优先级顺序:0 1
[单片机]
STM8S103 ADC初始化设置
adc.h #ifndef __ADC_H_ #define __ADC_H_ #include “define.h” //ADC通道号定义 #define ADC_Channel0 (unsigned char)0x00 #define ADC_Channel1 (unsigned char)0x01 #define ADC_Channel2 (unsigned char)0x02 #define ADC_Channel3 (unsigned char)0x03 #define ADC_Channel4 (unsigned char)0x04 #define ADC_Channel5 (unsigned char)0x05
[单片机]
STM8S103串口通信初始化设置
硬件: STM8单片机(很裸,就一个单片机加俩电容) ST-Link V2仿真器 PL2103 USB转TTL小板 声明部分 uart.h #ifndef __UART_H__ #define __UART_H__ //#include “stm8s.h” #include “define.h” //Fcpu=8M时波特率设置 #define UART_RATE_1200 (uint16)6666 //0x1a0a #define UART_RATE_2400 (uint16)3333 //0xd05 #define UART_RATE_4800 (uint16)1667 //0x683 #define UART_T
[单片机]
STM8S103之时钟设置
最大时钟(指的是system clock):外部晶振24MHz,内部高速RC16MHz 三个时钟源:外部晶振、内部高速RC(上电默认) +内部低速RC 几个时钟:master clock(即sytem clock),fcpu,外设时钟、AWU时钟 调用库函数中CLK_ClockSwitchConfig,参考库函数clk_clockselection,但是分频还得进一步设置 上电默认:内部高速RC,HSIDIV=/8,CPUDIV=/1,外部时钟全使能,查看相关寄存器的Reset value
[单片机]
STM32中断设置以及中断优先级设置三步曲
中断作为stm32中必不可少的一个功能,其重要性是不言而喻的因此把中断学习好是根本。 所以今天就来好好啃一下中断配置的知识,俗话说:磨刀不误砍柴工。问题是什么呢?项目中我用到了一个触摸键盘TTP229,结果在测试键盘时,不能够输入密码?最终,调试出bug就是由于中断优先级的影响。 本项目使用到的是STM32F030C8型号的MCU,我们可以从官方下载到的标准库文件中的启动汇编文件中,查看到本型号单片机的外部中断向量表。(如下图所示) 首先,我们了解一下NVIC是什么,在core_cm0.h文件中的标准库中的NVIC结构体。 其中,我们一般只用到ISER、ICER、IP这3个寄存器。ISER用于使能中
[单片机]
stm8s中断优先级程序的理解及设置方法
STM8的中断优先级 STM8S的中断由中断控制器(ITC)控制。STM8所有IO都支持中断,分为PA~PE 5个组,每组IO对应一个中断服务函数(也就是每组IO只有一个向量)。 STM8没有专门的中断状态寄存器,所以只能通过刚进入中断就读取IDR来判断,不过在某些情况下,此种方法就不好用了,所以在设计的时候就要考虑清楚,是不是会冲突。最好把有冲突的中断放到不同的组。STM8的外部中断采用软件优先级+硬件优先级的控制方法,来控制优先级分组。软件优先级优先于硬件优先级。 硬件优先级由向量号确定,向量号越小,优先级越高。STM8软件优先级设置可以分为4个等级(0~3),实际上可设置的就三个等级:1~3优先级顺序
[单片机]
STM32中断设置以及中断优先级设置
最近,在做一个智能锁的项目,由于,今天碰到了一个关于中断的问题,因此,又回来好好啃一下中断配置的知识,俗话说:磨刀不误砍柴工。问题是什么呢?项目中我用到了一个触摸键盘TTP229,结果在测试键盘时,不能够输入密码?最终,调试出bug就是由于中断优先级的影响。 本项目使用到的是STM32F030C8型号的MCU,我们可以从官方下载到的标准库文件中的启动汇编文件中,查看到本型号单片机的外部中断向量表。(如下图所示) 首先,我们了解一下NVIC是什么,在core_cm0.h文件中的标准库中的NVIC结构体。 其中,我们一般只用到ISER、ICER、IP这3个寄存器。ISER用于使能中断,ICER用来清除中断,IP
[单片机]
stm32(二) stm32中断优先级的设置
stm32优先级 1.优先级等级: STM32用户能分配的优先级有16级,也就是用优先级寄存器NVIC- IP 的高四位来表示莫个中断的优先级。 2.优先级组: 在STM32中将一个中断的优先级分为:抢占优先级和子优先级。 在进行优先级判断的时候先是比较抢占优先级然后比较子优先级。 在固件库中用变量分别表示抢占优先级和子优先级: NVIC_InitTypeDef.NVIC_IRQChannelPreemptionPriority;(抢占优先级) NVIC_InitTypeDef.NVIC_IRQChannelSubPriority;(子优先级) 优先级组就是对抢占优先级和
[单片机]