(二)STM32单片机中断系统分析

1》中断的过程:

        在程序运行过程中:

        中断源引发中断

        CPU发生现场保护事件

        CPU进入中断处理函数

        执行完处理函数

        CPU发生现场恢复事件

        程序继续执行

     (现场保护事件和现场恢复事件是CPU自动完成)

2》中断源----引发中断的事件    

   

3》中断嵌套:在中断服务函数运行过程中,有其他的中断源引发中,先去执行其他中断服务函数,再继续执行

   

 4》NVIC:异常控制器

            为每个中断源配置两种优先级:(数组越小,优先级越高)

            抢占优先级(主优先级):具备抢占功能,高优先级可以抢占低优先级

            响应优先级(次优先级):不具备抢占功能,只有当两个同主优先级同时发生时,高优先    级先执行

           

        NVIC为用户提供五种管理中断的方式:

          *   This parameter can be one of the following values:

          *     @arg NVIC_PriorityGroup_0: 0 bits for pre-emption priority 主优先级

          *                                4 bits for subpriority 次优先级 0---F

          *     @arg NVIC_PriorityGroup_1: 1 bits for pre-emption priority 主优先级 0---1

          *                                3 bits for subpriority 次优先级 0---7

          *     @arg NVIC_PriorityGroup_2: 2 bits for pre-emption priority 0---3

          *                                2 bits for subpriority          0---3

          *     @arg NVIC_PriorityGroup_3: 3 bits for pre-emption priority 0---7

          *                                1 bits for subpriority          0---1

          *     @arg NVIC_PriorityGroup_4: 4 bits for pre-emption priority 0---F

          *                                0 bits for subpriority

    5》配置中断的步骤:

        1》配置中断源

            void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT, FunctionalState NewState)

        2》为中断源配置中断优先级

            typedef struct

            {
              uint8_t NVIC_IRQChannel;//中断通道号----在stm32f10x.h这个头文件中的 typedef enum IRQn 找

              uint8_t NVIC_IRQChannelPreemptionPriority; //主优先级

              uint8_t NVIC_IRQChannelSubPriority; //次优先级

              FunctionalState NVIC_IRQChannelCmd;  //使能此通道

            } NVIC_InitTypeDef;

            NVIC_Init(NVIC_InitTypeDef * NVIC_InitStruct)

        3》编写中断服务函数-----放在stm32f10x_it.c中【

            void     函数名(在启动文件中已经定义)(void)

            {
                //具体中断发生后干的事情

            }

            

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值