串口中断

设置中断是对内核操作,故应该在内核系统文件中进行配置。

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中编写中断服务函数,中断服务函数不用在头文件中声明。

    

猜你喜欢

转载自blog.csdn.net/Titus_1996/article/details/82621980
今日推荐