Cortex-M 3割り込み


1異常
M3  15     ,240     IRQ,  NMI,  ,hardfault                  ,       。
M3               。

2割込み優先度について
M3 ,    ,NMI   fault       ,           。   ,CM3  3           256        ,    128   。  ,    CM3        ,               , 8 ,16 ,32  。                      。
   3                    :
(https://img-blog.csdn.net/20150918210348709)
 M3 ,         ,           ,       。                   ,     
    1、                
    2、          。
        ,     3        ([7:5]),         5(   5   ),   4      ,             2     ,
(https://img-blog.csdn.net/20150918210522808)
                        
(https://img-blog.csdn.net/20150918210552871)
              ,                     ,    m3   API    。
     CM3 ,    3   8        。         ,              0xFF,    ,     1,               。

割り込み構成ベースの各外部割り込みは、NVICの次のレジスタに「書留」されます.
 1.         
 2.    “  ”   
 3.       
 4.        
 5.        (PRIMASK, FAULTMASK  BASEPRI)
  ,                
 1.          
 2.          
 3.        
         
      Handler        SHCSR  fault,  fault       fault       ,         。           SHCSR   ,  faults                          。
          ICSR
           ,               ,                   。

異常マスクレジスタPRIMASKは、NMIおよびハードfault以外のすべての異常に使用され、現在の優先度を効率的に0(プログラマブル優先度の中で最も高い優先度)に変更する.このレジスタはMRSとMSRの以下の例でアクセスできる:1.オフ割り込み
MOV   R0,     #1
MSR   PRIMASK, R0 
  • オープンブレーク
  • MOV   R0,     #0
    MSR   PRIMASK,  R0

    また、CPSコマンドにより、上記の機能を迅速に実行することもできる.
    CPSID i    ;   
    CPSIE i    ;   
    FAULTMASK  ,         -1。    ,  fault     。     PRIMASK   。      ,FAULTMASK           。
                ,     NMI,  NMI           。           ,          。 NMI   ,“      ,       ,         ”!  ,  NMI             ,               ……              ,              ,             ,         。
    

    Active状態レジスタは、外部割り込みごとにアクティブな状態ビットを有する.プロセッサがISRの最初の命令を実行すると、そのアクティブビットは1に設定され、ISRが戻るまでハードウェアがクリアされない.ネストがサポートされているため、優先度の高い例外がISRをプリエンプトできます.しかし,中断されてもプリエンプトされ,その活動状態は依然として1である.
    3使用中断
    アプリケーションがROMに格納されている場合は、例外サービスプログラムを変更する必要はありません.
  • 優先度グループ
  • を確立する.
  • は、割り込みの優先度
  • を指定する.
  • は、この割り込み
  • を可能にする.
    4 cm 3.hでの操作中断相関関数
    __STATIC_INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup)       //---      
    __STATIC_INLINE uint32_t NVIC_GetPriorityGrouping(void)                  //---      
    __STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn)                 //---    
    __STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn)                    //---    
    __STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn)          //---        
    __STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn)             //---    
    __STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn)           //---      
    __STATIC_INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn)              //---      
    __STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)  //---       
    __STATIC_INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn)             //---       
    __STATIC_INLINE void NVIC_SystemReset(void)                          //---NVIC    
    

    5ユーザEFM 32割り込み
    1)優先度数は、まず、特定のプロセッサに対してサポートされる外部割り込み数が異なるため、割り込み優先度を設定する際に、チップが実際にどれだけのビットを使用して優先度を表すかを知る必要がある.EFM 32にて:_NVIC_PRIO_BITS定義efm 32 g 280 f 128 h中.
    #define  __NVIC_PRIO_BITS       3 /**< NVIC interrupt priority bits */
     cm3.h                :
    
    NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff);  
         cm3.h               (8-__NVIC_PRIO_BITS)     。  EFM32 startup.s   30        。 
    2)    
                  ,      AIPCR[8:10]    0,  (8-__NVIC_PRIO_BITS)                       。
          ,                 。
    
    void  NVIC_SetPriorityGrouping (uint32_t PriorityGroup) 
    PriorityGroup
         7-PriorityGroup       。 PriorityGroup 5, [7:6]         。
    3)       
         core_cmFunc.h     PRIMASK         
    
        __disable_irq(void);
        __enable_irq(void);
        __get_PRIMASK(void);
        __set_PRIMASK(uint32_t priMask);

    6 SVC使用
        SVC     8     ,         ,         , :
        SVC   3    ;  3     
        SVC     OS   API   。           OS   ,      API     。