• 外部中断0(含知识点)


      1 #include "stm32f10x.h"   // 相当于51单片机中的  #include <reg51.h>
      2 #include "stm32f10x_gpio.h"
      3 #include "stm32f10x_exti.h"
      4 #include "misc.h"
      5 
      6 /*外部中断配置*/
      7 
      8 
      9 int main(void)
     10 {
     11     /***************************************************************/
     12     
     13         //EXTI_InitTypeDef定义于stm32f10x_exti.h
     14 
     15 
     16     /*GPIO配置*/
     17     //step1:使能
     18     GPIO_InitTypeDef a;
     19     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
     20     //结构体
     21     a.GPIO_Speed=GPIO_Speed_50MHz;
     22     a.GPIO_Pin=GPIO_Pin_5;
     23     //推挽输出
     24     a.GPIO_Mode=GPIO_Mode_Out_PP;
     25     //调用GPIO初始化函数
     26     GPIO_Init(GPIOB,&a);
     27     /***************************************************************/
     28     
     29     
     30     /*
     31     *外部中断配置
     32     *总结:
     33     *1、定义一个结构体
     34     *2、四个内容(选择路线、线路模式、触发方式、使能)
     35     *3、调用一个函数
     36     */
     37 EXTI_InitTypeDef c;
     38     /*
     39     *选择了待使能或失能的外部路线(0——18可选)
     40     */
     41 c.EXTI_Line=EXTI_Line0;//外部路线0
     42 /*
     43     *设置了被使能线路的模式
     44     *设置为事件:EXTI_Mode_Event
     45     *设置为中断:EXTI_Mode_Interrupt
     46     */
     47 c.EXTI_Mode=EXTI_Mode_Interrupt;//中断模式
     48 /*
     49     设置了被使能线路的触发边沿
     50     EXTI_Trigger_Falling下降沿为中断请求
     51     EXTI_Trigger_Rising 上升沿为中断请求
     52     EXTI_Trigger_Rising_Falling上升沿和下降沿为中断请求
     53 */
     54 c.EXTI_Trigger=EXTI_Trigger_Rising;//上升沿为中断请求
     55     /*
     56     *用来定义选中线路的新状态
     57     *它可以被设为ENABLE或者DISABLE
     58     */
     59 c.EXTI_LineCmd=ENABLE;//使能
     60     /*外部中断初始化函数
     61     *功能:根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器。
     62     *指向结构体EXTI_InitTypeDef的指针
     63     */
     64     EXTI_Init(&c);//指向结构体EXTI_InitTypeDef的指针a
     65 /***************************************************************************/
     66 /*NVIC嵌套向量中断控制器*/
     67 /*
     68 *1
     69 *优先级分组:先占优先级和重优先级
     70 *输入参数:
     71 *NVIC_PriorityGroup_0
     72 *NVIC_PriorityGroup_1
     73 *NVIC_PriorityGroup_2
     74 *NVIC_PriorityGroup_3
     75 *NVIC_PriorityGroup_4
     76 */
     77 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
     78     /*
     79 *2、NVIC初始化结构体
     80 */
     81 NVIC_InitTypeDef b;
     82 /*
     83 *中断源
     84 *用于使能或者失能指定的IRQ通道
     85 *参数:
     86 *(详细参数请看最后截图一..............)
     87 */
     88 b.NVIC_IRQChannel = EXTI0_IRQn;//EXTI0_IRQn外部中断线0中断
     89 //抢占优先级
     90 /*
     91 *该参数设置成员NVIC_IRQChannel中的抢占优先级
     92 *(详细参数请看最后截图二..............)
     93 */
     94 b.NVIC_IRQChannelPreemptionPriority = 1;//0 1 2 3 4 
     95 //子优先级
     96 /*
     97 *该参数设置成员NVIC_IRQChannel中的从占优先级
     98 *(详细参数请看最后截图二..............)
     99 */
    100 b.NVIC_IRQChannelSubPriority = 1;//0 1 2 3 4 
    101 //使能
    102 /*
    103 *指定了在成员NVIC_IRQChannel中定义的IRQ通道被使能还是失能
    104 *参数:ENABLE或者DISABLE
    105 */
    106 b.NVIC_IRQChannelCmd = ENABLE;
    107 
    108 /*
    109 *3、NVIC初始化函数
    110 *功能:根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器。
    111 */
    112 NVIC_Init(&b);
    113 /**********************************************************************/
    114 
    115 GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource0);//选择GPIO管脚用作外部中断线路
    116 
    117 }
    118 void EXTI0_IRQHandler(void)
    119 {
    120     //确保是否产生EXTI line中断
    121     if(EXTI_GetITStatus(EXTI_Line0)!=RESET) // 检查指定的EXTI线路触发请求发生与否
    122     {
    123         if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)==0)//
    124         {
    125         GPIO_SetBits(GPIOB,GPIO_Pin_5);
    126         }
    127         else
    128         {    
    129         GPIO_ResetBits(GPIOB,GPIO_Pin_5);
    130         }
    131         EXTI_ClearITPendingBit(EXTI_Line0);
    132     }
    133     
    134 }

  • 相关阅读:
    addEventListener事件委托
    ES6的解构赋值
    JavaScript 中最​​重要的保留字
    HTML 5 Web 存储
    Node.js 里的 process.nextTick(),简单理解
    实现多层DIV叠加的js事件穿透
    touch事件中的touches、targetTouches和changedTouches详解
    Promise.all( ) 的使用
    js 中的五种迭代方法
    迭代
  • 原文地址:https://www.cnblogs.com/kinson/p/7694116.html
Copyright © 2020-2023  润新知