zoukankan      html  css  js  c++  java
  • 关于stm32系统中断理解

    stm32具有很强大的中断系统,一般开发板上自带的内部中断系统,RTC、USART、定时器中断比较常用,而更强大的在于,stm32可通过不同的IO,连接外设产生中断

    而由于,IO中断的不常用,也往往会使初学者迷惑。首先要知道的是IO与中断线的对应关系.

    不同的开发板可根据阅读不同的参考手册,但基本理解上都是大同小异,了解对应关系后就是对函数的理解与使用了。具体如何通过一个中断线控制多个IO也是在具体函数中表现出来的。

    一、首先是对中断初始化

     1 void EXTIX_Init(void)
     2 {    
     3     EXTI_InitTypeDef EXTI_InitStrue;
     4     NVIC_InitTypeDef NVIC_InitStrue;
     5     
     6     RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//ÍⲿÖжÏÐèҪʹÄÜAFIOʱÖÓ
     7     
     8     //B1 PA0-EXTI0  PA0¶Ë¿ÚÖжÏÏß¼°Öжϳõʼ»¯ÅäÖÃ
     9     GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);
    10 
    11     EXTI_InitStrue.EXTI_Line=EXTI_Line0;
    12     EXTI_InitStrue.EXTI_Mode=EXTI_Mode_Interrupt;
    13     EXTI_InitStrue.EXTI_Trigger=EXTI_Trigger_Falling;//ϽµÑØ´¥·¢
    14     EXTI_InitStrue.EXTI_LineCmd=ENABLE;
    15     EXTI_Init(&EXTI_InitStrue);
    16 
    17     NVIC_InitStrue.NVIC_IRQChannel=EXTI0_IRQn;//ʹÄÜ°´¼üËùÔÚµÄÍⲿÖжÏͨµÀ
    18     NVIC_InitStrue.NVIC_IRQChannelPreemptionPriority=2;//ÇÀÕ¼ÓÅÏȼ¶2
    19     NVIC_InitStrue.NVIC_IRQChannelSubPriority=2;//×ÓÓÅÏȼ¶2
    20     NVIC_InitStrue.NVIC_IRQChannelCmd=ENABLE;//ʹÄÜÍⲿÖжÏͨµÀ
    21     NVIC_Init(&NVIC_InitStrue);
    22 }

    这里是通过IO_PA0所带按键控制中断产生。

    这里主要调用了三个函数

    1.void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource)     代码实现第9行   前一个参数IO接口组,后一个参数是具体接口。

    2.EXTI_Init();         来看看结构体所需要配置的参数

     1 typedef struct
     2 {
     3   uint32_t EXTI_Line;               /*!< Specifies the EXTI lines to be enabled or disabled.
     4                                          This parameter can be any combination of @ref EXTI_Lines */
     5    
     6   EXTIMode_TypeDef EXTI_Mode;       /*!< Specifies the mode for the EXTI lines.
     7                                          This parameter can be a value of @ref EXTIMode_TypeDef */
     8 
     9   EXTITrigger_TypeDef EXTI_Trigger; /*!< Specifies the trigger signal active edge for the EXTI lines.
    10                                          This parameter can be a value of @ref EXTIMode_TypeDef */
    11 
    12   FunctionalState EXTI_LineCmd;     /*!< Specifies the new state of the selected EXTI lines.
    13                                          This parameter can be set either to ENABLE or DISABLE */ 
    14 }EXTI_InitTypeDef;

     

    第一个参数是中断线的标号,取值范围为EXTI_Line0~EXTI_Line15,第二个参数是中断模式, 可选值为中断 EXTI_Mode_Interrupt 和事EXTI_Mode_Event,第三个参数是触发方式,可以是下降沿触发 EXTI_Trigger_Falling,上升沿触发 EXTI_Trigger_Rising,或者任意电平(上升沿和下降沿) 触发EXTI_Trigger_Rising_Falling。最后一个参数就是使能中断线了。

    3.NVIC_Init();           设置好了中断的触发模式等初始化参数。 既然是外部中断, 涉及到中断我们当然还要设置 NVIC 中断优先级。 这个在前面已经讲解过.

                                     具体的内置参数不再介绍,谈谈所配置时所要注意的事项。

                                   1.第一个参数,对于外部中断  对应关系不再像上一个函数与中断线是一一对应,而USART、RTC、定时器更是需要单独记忆。下面给出一些总结

                                     对于外部中断   可选择为EXTI0_iRQn、EXTI1_IRQn、EXTI2_IRQn、EXTI3_IRQn、EXTI4_IRQn、EXTI9_5IRQn、EXTI15_10IRQn

                                   通用定时器 TIM2_IRQn~TIM7_ TIM2_IRQn  .  RTC :  RTCAlarm_IRQn   . USART  :   USART1_IRQn    USART2_IRQn    USART3_IRQn .

                                   其实开发板所带的库函数开发指南在STM32FXXXx.h  这种函数头文件应该都可以找到,或者直接查看  goto definition NVIC_Init()    然后继续 go to                                       definition 第一个入口参数  然后再这个文件库里面找。

                                 2.  第二第三的参数  抢占与子优先级应根据之前  中断优先级分组具体填写。

    二.、中断服务函数 

           中断服务函数名称也是系统定义好的,学者可通过找Startup_stm32xx.s   知道了名称其实也就可以写出服务  只需要把中断名称中的 IRQn改成IRQHandler 

          举个例子 void EXTI1_IRQHandler(void)   这个就是  EXTI_IRQn的中断服务函数。

          常用的中断服务函数格式为:
    void EXTI3_IRQHandler(void)
    {
    if(EXTI_GetITStatus(EXTI_Line3)!=RESET)//   判断某个线上的中断是否发生
    {
    中断逻辑…
    EXTI_ClearITPendingBit(EXTI_Line3); //     清除 LINE 上的中断标志位
    }
    }

    完成了中断服务函数方面的书写,中断方面也就基本没有问题了。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    服务函数

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     



  • 相关阅读:
    基于 BP 神经网络的识别手写体数字
    【science封面文章】Human-level concept learning through probabilistic program induction
    漫谈小样本的类人概念学习与大数据的深度强化学习
    Setting up a Deep Learning Machine from Scratch (Software)
    Building Apache Thrift on CentOS 6.5¶
    ---Ubuntu 14.04下配置caffe---
    markdown基本语法说明
    Andrew ng清华报告听后感
    Median of Two Sorted Arrays
    LeetCode Question Difficulty Distribution
  • 原文地址:https://www.cnblogs.com/6F3BUK/p/14370211.html
Copyright © 2011-2022 走看看