1. 程式人生 > >串列埠中斷

串列埠中斷

設定中斷是對核心操作,故應該在核心系統檔案中進行配置。

1.D:\KEIL軟體\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc


2.還是上面的路徑,複製以下程式碼:

#define NVIC_PriorityGroup_0         ((uint32_t)0x700) /*!< 0 bits for pre-emption priority

                                                            4 bits for subpriority */

#define NVIC_PriorityGroup_1         ((uint32_t)0x600) /*!< 1 bits for pre-emption priority

                                                            3 bits for subpriority */

#define NVIC_PriorityGroup_2         ((uint32_t)0x500) /*!< 2 bits for pre-emption priority

                                                            2 bits for subpriority */

#define NVIC_PriorityGroup_3         ((uint32_t)0x400) /*!< 3 bits for pre-emption priority

                                                            1 bits for subpriority */

#define NVIC_PriorityGroup_4         ((uint32_t)0x300) /*!< 4 bits for pre-emption priority

                                                            0 bits for subpriority */


3.找到我們需要用的函式。

    a.開啟Core_cm3.h檔案,找到中斷分組設定函式,複製到SYS.C。

    b.找到中斷使能函式,複製到SYS.C。

      void NVIC_EnableIRQ(IRQn_Type IRQn);

    c.找到中斷優先順序設定函式,複製到SYS.C。

      void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority);

    d.找到返回中斷優先順序的函式,複製到SYS.C。

       uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority);

結果如下:    


4.在SYS.H中包含中斷設定函式。並在USART.C中呼叫此標頭檔案和需用的標頭檔案。


5.在USART.C中使能相應的中斷,並呼叫設定中斷函式,設定中斷線,搶佔優先順序,子優先順序。

    

      

 

6.在USART.C中編寫中斷服務函式,中斷服務函式不用在標頭檔案中宣告。