<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          STM32中NVIC的個(gè)人理解

          作者: 時(shí)間:2016-11-09 來(lái)源:網(wǎng)絡(luò) 收藏
          STM32有43個(gè)channel的settable的中斷源;AIRC(Application Interrupt and Reset Register)寄存器中有用于指定優(yōu)先
          級(jí)的4 bits。這4個(gè)bits用于分配preemption優(yōu)先級(jí)和sub優(yōu)先級(jí),在STM32的固件庫(kù)中定義如下
          /* Preemption Priority Group -------------------------------------------------*/
          #define NVIC_PriorityGroup_0 ((u32)0x700) /* 0 bits for pre-emption priority
          4 bits for subpriority */
          #define NVIC_PriorityGroup_1 ((u32)0x600) /* 1 bits for pre-emption priority
          3 bits for subpriority */
          #define NVIC_PriorityGroup_2 ((u32)0x500) /* 2 bits for pre-emption priority
          2 bits for subpriority */
          #define NVIC_PriorityGroup_3 ((u32)0x400) /* 3 bits for pre-emption priority
          1 bits for subpriority */
          #define NVIC_PriorityGroup_4 ((u32)0x300) /* 4 bits for pre-emption priority
          0 bits for subpriority */
          形象化的理解是:
          你是上帝,
          造了43個(gè)人,這么多人要分社會(huì)階級(jí)和社會(huì)階層了;
          因?yàn)?ldquo;階級(jí)”的詞性比較重;"階層"比較中性,
          所以preemption優(yōu)先級(jí)->階級(jí);每個(gè)階級(jí)內(nèi)部,有一些階層,sub優(yōu)先級(jí)->階層;
          如果按照NVIC_PriorityGroup_4這么分,就分為了16個(gè)階級(jí)(1個(gè)階層就是1個(gè)preemption優(yōu)先級(jí)),0個(gè)階層;高階級(jí)的
          人,可以打斷低階級(jí)的正在做事的人(嵌套),最多可以完成1個(gè)中斷和15級(jí)嵌套。
          每個(gè)階級(jí)(每個(gè)preemption優(yōu)先級(jí)),你來(lái)指定這43人中,誰(shuí)進(jìn)入該階級(jí);一個(gè)人叫EXTI0_IRQChannel,你指定他進(jìn)入“
          階級(jí)8”,則
          NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel;
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 8; // 指定搶占式優(yōu)先級(jí)別1,可取0-15
          另外,在同一階級(jí)內(nèi)部,一個(gè)人在做事的時(shí)候,另外一個(gè)人不能打斷他;(preemption優(yōu)先級(jí)別相同的中斷源之間沒有嵌
          套關(guān)系)
          還有,如果他們兩個(gè)同時(shí)想做事,因?yàn)闆]有階層,那么就根據(jù)Vector table中的物理排序,讓排名靠前的人去做;
          又有1個(gè)人SPI1_IRQChannel,設(shè)定如下
          NVIC_InitStructure.NVIC_IRQChannel = SPI1_IRQChannel;
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; // 指定搶占式優(yōu)先級(jí)別1,可取0-15
          SPI1_IRQChannel的階級(jí)高,EXTI0_IRQChannel做事的時(shí)候可以打斷(嵌套)。
          如果按照NVIC_PriorityGroup_3這么分,就分為了8個(gè)階級(jí)(1個(gè)階級(jí)是1個(gè)preemption優(yōu)先級(jí)),每個(gè)階級(jí)內(nèi)有2個(gè)階層(
          sub優(yōu)先級(jí));高階級(jí)的人,可以打斷低階級(jí)的正在做事的人(嵌套),最多可以完成1個(gè)中斷和7級(jí)嵌套。
          每個(gè)階級(jí)(每個(gè)preemption優(yōu)先級(jí)),你來(lái)指定這43人中,誰(shuí)進(jìn)入該階級(jí);一個(gè)人叫EXTI0_IRQChannel,你指定他進(jìn)入“
          階級(jí)3”,則:
          NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel;
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3; // 指定搶占式優(yōu)先級(jí)別1,可取0-7
          還需要指定他的階層:
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // 指定響應(yīng)優(yōu)先級(jí)別0,可取0-1
          另有1個(gè)人叫EXTI9_5_IRQChannel,他的階級(jí)和階層設(shè)定如下
          NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3; // 指定搶占式優(yōu)先級(jí)別0,可取0-7
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; // 指定響應(yīng)優(yōu)先級(jí)別1
          那么這兩個(gè)人是同一階級(jí)的兄弟,一個(gè)人在做事的時(shí)候,另外一個(gè)人不能打斷他;(preemption優(yōu)先級(jí)別相同的中斷源之
          間沒有嵌套關(guān)系)
          如果他們兩個(gè)同時(shí)想做事,因?yàn)榍罢叩碾A層高,所以前者優(yōu)先。
          還有一個(gè)人叫USART1_IRQChannel,他的階級(jí)和階層設(shè)定如下
          NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQChannel;
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; // 指定搶占式優(yōu)先級(jí)別0,可取0-7
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; // 指定響應(yīng)優(yōu)先級(jí)別1
          USART1_IRQChannel的優(yōu)先級(jí)最高,當(dāng)前面兩個(gè)人做事的時(shí)候,他都可以打斷(嵌套)。
          以下的類推。
          如果按照NVIC_PriorityGroup_0這么分,那么沒有階級(jí),只有16個(gè)階層了。
          需要給各個(gè)人指定階層編號(hào)。sub優(yōu)先級(jí)的范圍0-15
          當(dāng)一個(gè)人做事的時(shí)候,另外的人不能打斷他(就沒有嵌套了);當(dāng)多人同時(shí)想做事的時(shí)候,按照階層編號(hào)的排序,排名靠前的先做事。
          階層編號(hào)一樣的人同時(shí)想做事,那么按照Vector Table硬件排序,排名靠前的先做。


          關(guān)鍵詞: STM32NVI

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();