• STM32 外部中断


    1)STM32一般有19 个外部中断为:

    线 0~15:对应外部 IO 口的输入中断。线 16:连接到 PVD 输出。
    线 17:连接到 RTC 闹钟事件。 线 18:连接到 USB 唤醒事件。 

    2)配置 GPIO 与中断线的映射关系的函数 GPIO_EXTILineConfig()来实现的:

    void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource) ;

    中断线上中断的初始化是通过函数 EXTI_Init()实现的。 EXTI_Init()函数的定义是:

    void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct)

    {

    EXTI_InitTypeDef  EXTI_InitStructure;

    EXTI_InitStructure.EXTI_Line=EXTI_Line4;   // 设置中断线的标号

    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;  //选择为中断;还有一个选择是事件:Event

    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; /*触发方式(下降沿):Falling  (上升沿):Rising    (任意电平):Falling_Rising */

    EXTI_InitStructure.EXTI_LineCmd = ENABLE;  //对中断线进行使能

    EXTI_Init(&EXTI_InitStructure); //初始化

    }

    3)设置中断线 2 的中断优先级。

    void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)

    {

    NVIC_InitTypeDef NVIC_InitStructure;

    NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn; //使能按键外部中断通道

    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; //抢占优先级 2

    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02; //子优先级 2

    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中断通道

    NVIC_Init(&NVIC_InitStructure); //中断优先级分组初始化

    }

    4)EXPORT EXTI0_IRQHandler
    EXPORT EXTI1_IRQHandler
    EXPORT EXTI2_IRQHandler
    EXPORT EXTI3_IRQHandler
    EXPORT EXTI4_IRQHandler
    EXPORT EXTI9_5_IRQHandler
    EXPORT EXTI15_10_IRQHandler

    中断线 0-4 每个中断线对应一个中断函数, 中断线 5-9 共用中断函数 EXTI9_5_IRQHandler,中
    断线 10-15 共用中断函数 EXTI15_10_IRQHandler。 

    5)常用的中断服务函数格式为:

    void EXTIx_IRQHandler(void)

    {

      if(EXTI_GetITStatus(EXTI_Linex)!=RESET)//判断某个线上的中断是否发生

      {

      中断逻辑…

      EXTI_ClearITPendingBit(EXTI_Linex); //清除 LINE 上的中断标志位

      }

    }

    知识来源:STM32F1开发指南-库函数版本_V3.1 

  • 相关阅读:
    react深入学习(资料,案例)
    match.exec深入学习
    实用插件表格行列隐藏显示
    下拉选项插件的实现
    表格操作eventTable
    [CentOS7] 挂载iso镜像文件到/media目录下
    [CentOS7] 设置开机启动方式(图形界面或命令行)
    [CentOS7] 磁盘分区(gdisk, fdisk)
    [CentOS7] minimal安装后 出现 没有ifconfig 无法ping 无法yum could not retrieve mirrorlist http://mirrorlist.centos.org/
    [C++]C,C++中使用可变参数
  • 原文地址:https://www.cnblogs.com/zengsf/p/7161783.html
Copyright © 2020-2023  润新知