CC3200——中断优先级

版权声明:虽为原创,欢迎转载。 https://blog.csdn.net/m0_37655357/article/details/86299639

一、优先级基本理解

1、CC3200的中断优先级配置类似于STM32,分为抢占式优先级和响应优先级,优先级数值越大,优先级越低。

2、对于抢占式优先级不同的中断,高抢占优先级中断可以打断正在执行的低抢占优先级的中断。这里,我们说他们可以嵌套。

3、但是响应优先级不可以,它不具有“抢占”功能。后到来的中断,如果他和目前正在执行的中断的抢占优先级相同的话,即使响应优先级再高,也无法打断当前中断,只有等待当前中断完成后才会轮到他执行。在抢占优先级相同这个大前提下,响应优先级的作用是,当两个中断同时到来时,较高响应优先级的中断会先得到“响应”,也就是会先执行。

4、如果抢占和响应优先级都一样,那么当同时到来时,就根据他们在中断向量表中的排列顺序决定先执行哪一个。

二、CC3200的优先级原理

1、CC3200中的优先级通过3位二进制数表示,可以表示0-7级的中断。这三位二进制数被抢占优先级和响应优先级共同占有,因此,他们的分配方式有以下四种:

抢占优先级

响应优先级

0bit

3bit

1bit

2bit

2bit

1bit

3bit

0bit

如果用X表示抢占优先级位,Y表示响应优先级位,上面的表格还可以用下面的方式表示:

  1. YYY,三位全部表示响应优先级,则一共可分配8级,后面分配的优先级全是响应。

  2. XYY,一位抢占,两位响应,则后面可分配2级抢占优先级,4级响应优先级。

  3. XXY,依次类推

  4. XXX,依次类推

三、CC3200优先级配置

通过上面的分析,具体配置优先级的时候,需要以下两步:

1、设置中断优先级分组,也就是确定你需要几位抢占优先级。

函数原型:

    上面这个函数的参数就是你需要的抢占优先级的位数,通过上面的分析可以知道,这里你可以设置为0-3,但是他的允许范围是0-8,因为优先级只有3位,所以输入4-8的效果和3一样。

比如你设置

MAP_IntPriorityGroupingSet(2);

    这表示你要使用第二组的优先级,也就是上面说到的XXY,也就是你需要三位二进制数中的两位来表示抢占优先级。所以你后面设置的优先级的级数中,化为二进制时的前两位表示他的抢占优先级,第三位表示响应优先级。也就是说,你可以设置0-4级的抢占优先级,但是每个抢占优先级下面,只能设置2级的响应优先级了。

2、中断优先级设置

函数原型:

第一个参数是你需要配置的中断源

第二个参数就是中断的优先级别了,可以使用库文件中提供的优先级,是下面这8个宏中的一个:

//*****************************************************************************
// Interrupt priority levels
//*****************************************************************************
#define INT_PRIORITY_LVL_0      0x00
#define INT_PRIORITY_LVL_1      0x20
#define INT_PRIORITY_LVL_2      0x40
#define INT_PRIORITY_LVL_3      0x60
#define INT_PRIORITY_LVL_4      0x80
#define INT_PRIORITY_LVL_5      0xA0
#define INT_PRIORITY_LVL_6      0xC0
#define INT_PRIORITY_LVL_7      0xE0

当然,这个优先级的数值也是可以自己定义的:

// Interrupt priorities used within the test.
#define LOW_PRIORITY  0xFF
#define HIGH_PRIORITY 0x00
#define MIDDLE_PRIORITY 0x80

假如前面我们设置有限分组为3,也就是用三位二进制数全部表示抢占优先级,无响应优先级。那么上面我们自己定义的这个优先级:

0X80:前三位二进制数为100,表示抢占优先级为4。

0X00: 前三位二进制数为00,表示抢占优先级为0。

0XFF:前三位二进制数为111,表示抢占优先级为7。

因此,0X00表示的优先级最高,0X88表示的优先级次之,0XFF的优先级最低。而且他们都是抢占优先级,可以实现嵌套。

猜你喜欢

转载自blog.csdn.net/m0_37655357/article/details/86299639